Устаревшие типы элементов управления ActiveX (Forms 2.0)

Устаревшие типы элементов управления ActiveX (Forms 2.0)

Устаревшие типы элементов управления ActiveX (Forms 2.0)

Работа с объектами OLE и внедрённым контентом рассказывает, как получить доступ к внедрённому элементу управления Microsoft Forms 2.0 ActiveX через OleFormat.OleControl и привести его к абстрактному Forms2OleControl базовому классу. Aspose.Words FOSS для .NET также предоставляет пять строго типизированных подклассов для конкретных типов элементов управления, поддерживаемых Word — CheckBoxControl, OptionButtonControl, TextBoxControl, CommandButtonControl, и MorphDataControl – каждый в Aspose.Words.Drawing.Ole namespace, добавляя один специфичный для управления член поверх свойств Forms2OleControl уже предоставляет (Caption, Value, Enabled, Type, GroupName, ForeColor, BackColor, Width, Height, Name, ChildNodes).


CheckBoxControl и OptionButtonControl

CheckBoxControl расширяет MorphDataControl и добавляет Checked (a bool) для состояния включения/выключения элемента управления. OptionButtonControl также расширяет MorphDataControl и добавляет Selected (a bool) – используется для набора взаимно исключающих переключателей, которые используют один и тот же GroupName.


TextBoxControl

TextBoxControl расширяет MorphDataControl и добавляет Text (a string), отображаемый и редактируемый текст элемента управления.


CommandButtonControl

CommandButtonControl напрямую наследует Forms2OleControl (а не MorphDataControl) и имеет собственный конструктор. Он представляет кнопку, которая запускает макрос при щелчке в Word, при этом метка кнопки доступна через унаследованное свойство Caption.


MorphDataControl: общая база для элементов управления ввода данных

MorphDataControl является агрегатной базой для шести связанных типов элементов управления — флажок, комбинированный список, список, переключатель, текстовое поле и кнопку-переключатель. CheckBoxControl, OptionButtonControl и TextBoxControl каждый наследуют его, получая его члены и добавляя собственное типо-специфическое свойство.


Советы и лучшие практики

  • Считайте Forms2OleControl.Type (значение Forms2OleControlType), чтобы определить элемент управления перед приведением его к одному из конкретных подклассов — не каждый Forms2OleControl является одним из пяти строго типизированных подклассов, описанных здесь.
  • Используйте GroupName для объединения нескольких экземпляров OptionButtonControl в один взаимоисключающий набор, аналогично тому, как Word группирует переключатели.
  • Получайте доступ к вложенным элементам управления внутри кадра или многостраничного контейнера через унаследованный ChildNodes (это Forms2OleControlCollection), независимо от того, к какому подклассу относится контейнер.

Распространённые проблемы

ПроблемаПричинаИсправление
Приведение Forms2OleControl к CheckBoxControl вызывает InvalidCastExceptionЭлемент управления является другим типом элемента Forms 2.0 (например, TextBoxControl или OptionButtonControl)Проверьте Forms2OleControl.Type перед приведением к конкретному подклассу
OptionButtonControl.Selected не является взаимно исключающим с соседними элементами управленияЭлементы управления не используют один и тот же GroupNameУстановите одинаковое значение GroupName для каждого OptionButtonControl в наборе
CommandButtonControl.Caption пустНадпись кнопки берётся из унаследованного Forms2OleControl.Caption, а не из свойства, специфичного для CommandButtonControlЧитать Caption, а не несуществующий член, доступный только в CommandButtonControl

FAQ

Как мне узнать, к какому строго типизированному классу управления относится Forms2OleControl?

Прочитайте её свойство Type (Forms2OleControlType) или попытайтесь выполнить приведение к ожидаемому конкретному подклассу, например CheckBoxControl или TextBoxControl.

В чём разница между MorphDataControl и Forms2OleControl?

Forms2OleControl — это абстрактная база для всех элементов управления Forms 2.0. MorphDataControl — более конкретная абстрактная база, которая расширяет Forms2OleControl, общую для чекбокса, комбобокса, листбокса, переключателя, текстового поля и кнопки-переключателя.

Как прочитать состояние отметки чекбокса?

Приведите Forms2OleControl к CheckBoxControl и прочитайте её свойство Checked.

Расширяет ли CommandButtonControl MorphDataControl, как и остальные?

Нет – CommandButtonControl наследует Forms2OleControl напрямую, так как кнопка команды не является элементом ввода данных.


API Reference Сводка

КлассОписание:
MorphDataControlАбстрактный базовый класс для элементов управления checkbox, combo box, list box, option button, text box и toggle button
CheckBoxControlЭлемент управления Checkbox; расширяет MorphDataControl; добавляет Checked
OptionButtonControlЭлемент управления Option button; расширяет MorphDataControl; добавляет Selected
TextBoxControlЭлемент управления Text box; расширяет MorphDataControl; добавляет Text
CommandButtonControlЭлемент управления Command button; расширяет Forms2OleControl напрямую

См. также:

 Русский