Первый этап: Создание оболочки и формы

19 Июн
2010

В конце статьи вы найдете видео по данному уроку.

Первая задача это создать проект, который работает в качестве основной оболочки приложения.

Чтобы создать оболочку нужно:

  1. Создать новое C# Windows Forms приложение. Чтобы сделать это откройте меню File, кликните на пункт New, кликните на подпункт Project, и в списке шаблонов проектов Visual C# выберите Windows Forms Application.
  2. Назовите новое приложение ShellApplication. Убедитесь, что чекбокс Create dirrectory for solution отмечен.
  3. В Solution Explorer’e переименуйте Form1.cs в ShellForm.cs.
  4. В дизайнере нажмите правой кнопкой мыши на эту форму и выберите пункт Properties, затем измените свойство Text на Hello World Shell.
  5. Сохраните изменения и закройте дизайнер ShellForm.

По умолчанию, главным классом приложения можно указать класс WorkItem, если конечно не требуется дополнительной функциональности, отсутствующей в стандартном классе WorkItem (в нашем примере такого нет). Тем не менее, в этом примере вы создадите собственный WorkItem для оболочки. Для того чтобы это сделать, вам нужно добавить новый класс, который наследуется от класса WorkItem. Конечно, для начала нужно добавить рефренсы на основные классы, которые позволяют использовать Composite UI Application Block.

Чтобы добавить рефренсы на основные классы, нужно:

  1. В окне Solution Explorer найдите папку Refеrences в созданном проекте. Кликните по ней правой кнопкой мыши и, в появившемся меню, выберите AddRefrence.
  2. В Add Reference диалоге, откройте закладку Browse и, в папке, куда вы распаковали файлы Composite UI Application Block, найдите подпапку \Src\CS\Composite.UI.WinForms\bin\Debug.

    Примечание: Это по документации. В архиве, который я качал, они лежат тут:\Source\Blocks\CAB\CS\Source\CompositeUI.WinForms\bin\Debug\

    Чтобы не искать, где библиотеки лежат у вас, можете просто скачать этот архив.

  3. Выбрать следующие DLL библиотеки:
    • Microsoft.Practices.CompositeUI.dll
    • Microsoft.Practices.CompositeUI.WinForms.dll
    • Microsoft.Practices.ObjectBuilder.dll
  4. Далее нажмите правой кнопкой на проект и выберите «Add”->”New Item…” В открывшемся диалоге, выберите шаблон Class и назовите его ShellWorkItem.
  5. В созданном классе, добавьте следующее объявление пространства имен (namespace):
    using Microsoft.Practices.CompositeUI;
  6. Отредактируйте объявление класса ShellWorkItem, чтобы он был публичным и наследовал класс WirkItem, как показано ниже:
    public class ShellWorkItem : WorkItem
    {
    }
  7. Сохраните и закройте файл.

Ваша последняя задача на этом этапе — это изменить код входа в программу, чтобы загружать и запускать ваше приложение. Проект содержит файл Program.cs, инициализирующий и показывающий форму. Обязательно нужно менять код этого файла, для того, чтобы инициализировать CAB и загружать и запускать форму внутри корневого WorkItem.

Чтобы форма инициализировалась и отображалась внутри WorkItem, нужно сделать следующее:

  1. Переименуйте файл Program.cs в ShellApplication.cs.
  2. Измените существующее using объявление пространства WinForms на CompositUi.WinForms, как показано ниже:
    using Microsoft.Practices.CompositeUI.WinForms;
  3. Измените область видимости класса ShellApplication со static на public, и сделайте его наследником класса FormShellApplication, который говорит CAB загружать ShellForm в наш ShellWorkItem:
    public class ShellApplication : FormShellApplication<ShellWorkItem,
                                                             ShellForm>
    {
    }
  4. Добавьте атрибут [STAThread] static методу Main() этого класса. Этот метод выполняется, когда приложение запускается. Он должен создавать экземпляр вашего класса ShellApplication и вызывать для него метод Run()
    [STAThread]
    static void Main()
    {
      new ShellApplication().Run();
    }
  5. Сохраните и закройте файл.
  6. Нажмите F5, чтобы запустить приложение. Результат выполнение — это пустая форма с заголовком Hello World Shell. В этой оболочке вы создали слой для видимых элементов приложения. Модули смогут отображать свои SmartPartsы в любой из секций оболочки. Так же вы можете добавить другие элементы управления, если они понадобятся.

Изображение 1 показывает архитектуру созданного вами приложения. Когда приложение запускается, и вызывается метод Run() в Main() методе, CAB создает ShellForm и корневой ShellWorkItem. Оболочка вызывает некоторые виртуальные методы, которые вы можете переопределить, если это необходимо.

Эти методы включают: BeforeShellCreated, AfterShellCreated, AddServices и AddBuilderStrategies. Для примера, вы можете переопределить метод AddServices, если вы хотите добавить собственные сервисы в приложение, или метод AfterShellCreated, чтобы добавить элементы пользовательского интерфейса или выполнить запуск других необходимых вашему приложению процессов. Так же существуют методы, такие как OnUnhandledException, которые вы можете использовать для отлова исключений.

Предыдущая статья: «SCSF Инструкция: Моделирование и построение CAB приложений»
Следующая статья: «Этап второй: Создание и загрузка модуля»

Скачать: скачать документацию
Перевел: Рамиль Алиякберов a.k.a. R@Me0

2leep.com

4 комментария к записи Первый этап: Создание оболочки и формы

Avatar

Олег

18th Август 2010 в 18:10

Inconsistent accessibility: base class ‘Microsoft.Practices.CompositeUI.WinForms.FormShellApplication’ is less accessible than class ‘ShellApplication.ShellApplication’

Кто скажет в чем проблемма может бить(((

Avatar

R@Me0

18th Август 2010 в 18:30

Олег,
Проблема в том, что уровень видимости класса ShellApplication выше чем класса FormShellApplication. Сделайте, как минимум, одинаковые уровни видимости.
Сейчас MSVS у меня не установлена, поэтому я не могу посмотреть какие там у кого уровни, но могу предположить, что у класса ShellApplication уровень видимости public, а у FormShellApplication что то типа internal или вовсе private.

Выход: либо повысьте уровень видимости класса FormShellApplication до public, либо наоборот понизьте уровень класса ShellApplication до уровня FormShellApplication.

Avatar

Олег

18th Август 2010 в 20:04

Спасибо.
Я в MVP и CAB только начал разбираться. Интересовала бы дополнительная документация/подсказки по этому.
Ну и жду «Этап второй: Создание и загрузка модуля».
Спасибо еще раз.

Avatar

R@Me0

18th Август 2010 в 20:21

Олег, не за что.
Я как раз только что установил студию на новую систему. Возможно, в ближайшее время появится и этап второй.
Дополнительной информации у меня к сожалению нет. Сам пользуюсь только документацией.
Кстати, где то на сайте msdn выложена эта документация, оформленная, по моему, немного удобнее, чем .chm файл. Дал бы вам ссылку, но найти не могу.

Оставить комментарий или два

*

Наверх