Чтобы свойства и методы предоставляемые интерфейсом стали доступны для приложений, необходимо добавить к определению интерфейса модификатор доступа «public», как показано ниже.
public interface IMyFirstActiveX
Давайте определим для нашего интерфейса следующие свойства и методы:
- Свойства:
- Имя: StrProperty Тип данных: string
- Имя: IntProperty Тип данных: int
- Имя: FloatProperty Тип данных: float
- Методы:
- SampeMethod ()
- SampleMethodWithArgs (string arg1)
При определении свойств и методов интерфейса необходимо использовать атрибут [DispId(n)], который должен быть уникальным в его пределах. Итак, вот что у нас должно получиться:
Определение событий
Элементы управления ActiveX могут иметь события. Предоставление событий клиентам позволяем последним подписаться на них и получать извещения об их возникновении. Для того сделать доступным подписку на события нашего элемента управления ActiveX, нам необходимо добавить интерфейс, аналогичный интерфейсу свойств и методов. В это раз, мы дадим нашему интерфейсу имя IMyFirstActiveXEvents.
Как уже упоминалось ранее, при создании интерфейса свойств и методов мы должны:
- Задать следующие атрибуты для интерфейса:
- [ComVisible(true)]
- [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
- [Guid("56DA4D66-EED8-4C22-A81E-47C435B43F51")]
- Установить модификатор доступа для интерфейса как «public»
- Задать каждому событию уникальный атрибут [DispId(n)]
В нашем случае мы определим следующие события:
- OnValueChanged //Возникает когда изменилось значение свойства
- OnSelectionChanged //Возникает когда выбирается другой элемент
- OnButtonClicked //Возникает когда щелкнули по кнопке
Вот код получившегося интерфейса событий:
Пользовательский интерфейс
Теперь, когда мы определились со свойствами, методами и событиями элемента управления ActiveX, которые он будет предоставлять приложениям, давайте создадим пользовательский интерфейс для него.
Мы будет использовать пользовательский интерфейс для отображения и изменения значений свойств элемента управления ActiveX, инициирования возникновения событий, а также индикации когда методы вызываются клиентом.
Итак, добавим новый элемент в проект, используя шаблон Пользовательский элемент управления (User Control). Присвоим ему имя «SampleUI», как показано на рис. 5.
Рис. 5. Добавление в проект на Visual Studio 2012 пользовательского элемента управления?
Пользовательский интерфейс будет состоять из следующих элементов управления:
- Listbox
- Name: listBox1
- Items:
- Элемент 1
- Элемент 2
- Элемент 3
- Элемент 4
- Элемент 5
- Groupbox
- 3 x Labels
- Name: label1; Text: Свойство Str:
- Name: label2; Text: Свойство Int:
- Name: label3; Text: Свойство Float:
- 3 x Textbox
- Name: txtStrProperty
- Name: txtIntProperty
- Name: txtFloatProperty
- 1 x Button:
- Name: btnUpdateProperties
- Text: Обновить свойства
- 3 x Labels
- Button
- Name: btnClickEvent
- Text: Инициировать событие OnButtonClick
- ListView
- Name: listView1
- Columns:
- Name: TimeStamp; Text: Метка времени
- Name: Details; Text: Сообщение