В конце статьи вы найдете видео по данному уроку.
Первая задача это создать проект, который работает в качестве основной оболочки приложения.
Чтобы создать оболочку нужно:
По умолчанию, главным классом приложения можно указать класс WorkItem, если конечно не требуется дополнительной функциональности, отсутствующей в стандартном классе WorkItem (в нашем примере такого нет). Тем не менее, в этом примере вы создадите собственный WorkItem для оболочки. Для того чтобы это сделать, вам нужно добавить новый класс, который наследуется от класса WorkItem. Конечно, для начала нужно добавить рефренсы на основные классы, которые позволяют использовать Composite UI Application Block.
Чтобы добавить рефренсы на основные классы, нужно:
Примечание: Это по документации. В архиве, который я качал, они лежат тут:\Source\Blocks\CAB\CS\Source\CompositeUI.WinForms\bin\Debug\
Чтобы не искать, где библиотеки лежат у вас, можете просто скачать этот архив.
using Microsoft.Practices.CompositeUI;
public class ShellWorkItem : WorkItem
{
}
Ваша последняя задача на этом этапе — это изменить код входа в программу, чтобы загружать и запускать ваше приложение. Проект содержит файл Program.cs, инициализирующий и показывающий форму. Обязательно нужно менять код этого файла, для того, чтобы инициализировать CAB и загружать и запускать форму внутри корневого WorkItem.
Чтобы форма инициализировалась и отображалась внутри WorkItem, нужно сделать следующее:
using Microsoft.Practices.CompositeUI.WinForms;
public class ShellApplication : FormShellApplication<ShellWorkItem,
ShellForm>
{
}
[STAThread]
static void Main()
{
new ShellApplication().Run();
}
Изображение 1 показывает архитектуру созданного вами приложения. Когда приложение запускается, и вызывается метод Run() в Main() методе, CAB создает ShellForm и корневой ShellWorkItem. Оболочка вызывает некоторые виртуальные методы, которые вы можете переопределить, если это необходимо.
Эти методы включают: BeforeShellCreated, AfterShellCreated, AddServices и AddBuilderStrategies. Для примера, вы можете переопределить метод AddServices, если вы хотите добавить собственные сервисы в приложение, или метод AfterShellCreated, чтобы добавить элементы пользовательского интерфейса или выполнить запуск других необходимых вашему приложению процессов. Так же существуют методы, такие как OnUnhandledException, которые вы можете использовать для отлова исключений.
Предыдущая статья: «SCSF Инструкция: Моделирование и построение CAB приложений»
Следующая статья: «Этап второй: Создание и загрузка модуля»Скачать: скачать документацию
Перевел: Рамиль Алиякберов a.k.a. R@Me0
4 коммент. к записи Первый этап: Создание оболочки и формы
Олег
18th Август 2010 в 18:10
Inconsistent accessibility: base class ‘Microsoft.Practices.CompositeUI.WinForms.FormShellApplication’ is less accessible than class ‘ShellApplication.ShellApplication’
Кто скажет в чем проблемма может бить(((
R@Me0
18th Август 2010 в 18:30
Олег,
Проблема в том, что уровень видимости класса ShellApplication выше чем класса FormShellApplication. Сделайте, как минимум, одинаковые уровни видимости.
Сейчас MSVS у меня не установлена, поэтому я не могу посмотреть какие там у кого уровни, но могу предположить, что у класса ShellApplication уровень видимости public, а у FormShellApplication что то типа internal или вовсе private.
Выход: либо повысьте уровень видимости класса FormShellApplication до public, либо наоборот понизьте уровень класса ShellApplication до уровня FormShellApplication.
Олег
18th Август 2010 в 20:04
Спасибо.
Я в MVP и CAB только начал разбираться. Интересовала бы дополнительная документация/подсказки по этому.
Ну и жду «Этап второй: Создание и загрузка модуля».
Спасибо еще раз.
R@Me0
18th Август 2010 в 20:21
Олег, не за что.
Я как раз только что установил студию на новую систему. Возможно, в ближайшее время появится и этап второй.
Дополнительной информации у меня к сожалению нет. Сам пользуюсь только документацией.
Кстати, где то на сайте msdn выложена эта документация, оформленная, по моему, немного удобнее, чем .chm файл. Дал бы вам ссылку, но найти не могу.