Устаревшие типы элементов управления 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 напрямую |