Окончательный вариант пользовательского интерфейса должен выглядеть приблизительно как показано на рис. 6.
Рис. 6. Приблизительный вид пользовательского интерфейс элемента управления ActiveX
Как только все элементы пользовательского интерфейса добавлены, перейдите в режим просмотра кода, путем двойного щелчка на любом элементе на форме и добавьте следующие атрибуты в класс SampleUI:
- [ComVisible(true)]
- [Guid("BC97AC9D-4851-49CF-A5F8-F8C51B0753EF")]
- [ClassInterface(ClassInterfaceType.None)]
- [ComDefaultInterface(typeof(IMyFirstActiveX))]
- [ComSourceInterface(typeof(IMyFirstActiveXEvents))]
Затем, в классе SampleUI необходимо реализовать интерфейс IMyFirstActiveX. Для этого необходимо имя интерфейса добавляется в определение класса как показано ниже.
public partial class SampleUI : UserControl, IMyFirstActiveX
Для использования выше указанных атрибутов в классе SampleUI, также необходмо подключить пространство имен System.Runtime.InteropServices, как описывалось выше.
Реализация свойств и методов
Фактически реализация свойств и методов выглядит следующим образом:
- При изменении значения свойства происходит следующее:
- Обновление текстового поля графического интерфейса, которое отображает текущее значение соответствующего свойства
- Инициирование события OnValueChanged. Это происходит через вызов метода ValueChanged
- Добавление новой строки в ListView, информирующий об изменении значения свойства
Для всех методов, откуда бы они не вызывались, добавляется новая строка в ListView, включающая имя метода и аргументы, которые были переданы методу.
ListView обновляется через вызов метода UpdateListView.
Свойство StrProperty
Свойство IntProperty
Свойство FloatProperty
Метод SampleMethod
Метод SampleMethodWithArgs
Вспомогательные методы
Реализация событий
События реализуются с помощью делегатов. Сигнатуры делегатов (т.е. возвращаемое значение и аргументы) должны совпадать с сигнатурами событий определенных в интерфейсе (в нашем случае в интерфейсе IMyFirstActiveXEvents). Имена событий также должны совпадать с именами делегатов.