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

Чтобы свойства и методы предоставляемые интерфейсом стали доступны для приложений, необходимо добавить к определению интерфейса модификатор доступа «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.

Добавление в проект на Visual Studio 2012 пользовательского элемента управления

Рис. 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: Обновить свойства
  • Button
    • Name: btnClickEvent
    • Text: Инициировать событие OnButtonClick
  • ListView
    • Name: listView1
    • Columns:
      • Name: TimeStamp; Text: Метка времени
      • Name: Details; Text: Сообщение

Страницы

Теги: