Создание элемента управления ActiveX для SCADA Vijeo Citect с помощью Microsoft Visual C# 2012

Окончательный вариант пользовательского интерфейса должен выглядеть приблизительно как показано на рис. 6.

Приблизительный вид графический интерфейс элемента управления ActiveX

Рис. 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). Имена событий также должны совпадать с именами делегатов.

Страницы

Теги: