Поделиться через


Практическое руководство. Работа с окнами форм с помощью объектной модели InfoPath 2003

При работе с формой InfoPath программным образом можно написать код для доступа к окнам формы, а затем настроить некоторые содержащиеся в них элементы. Объектная модель, совместимая с InfoPath 2003, поддерживает доступ к окнам форм посредством использования интерфейса WindowObject в сочетании с интерфейсом WindowsCollection.

В InfoPath существует два типа окон:

  • Окно редактирования, которое используется при заполнении формы пользователем.

  • Окно разработки, которое используется при разработке пользователем шаблона формы.

При написании кода в шаблоне формы наиболее удобные функциональные возможности обеспечивает окно редактирования, поскольку оно позволяет использовать экземпляр WindowObject, который указывает на него для доступа к целому ряду свойств и методов, которые можно использовать для настройки процесса редактирования формы.

Обзор интерфейса WindowsCollection

Интерфейс WindowsCollection предоставляет указанные ниже свойства, которыми разработчики форм могут пользоваться для управления экземплярами WindowObject, содержащимися в интерфейсе.

Имя Описание

CountP:Microsoft.Office.InfoPath.Window.XmlForm

Возвращает количество объектов Window в семействе.

ItemP:Microsoft.Office.InfoPath.WindowCollection.Item(System.Int32)

Возвращает ссылку на указанный объект Window.

ЗаметкаЗаметка
Приложение Visual C# осуществляет доступ к семействам с помощью индексатора, а не вызова свойства Item. Например, thisApplication.Windows[0].Caption.

Обзор объекта Window

Интерфейс WindowObject предоставляет указанные ниже методы и свойства, которыми разработчики форм могут пользоваться для взаимодействия с окном InfoPath. Поддержка этих методов и свойств зависит от типа окна (XdWindowType), с которым осуществляется работа. Некоторые методы и свойства работают только с окном редактора (XdWindowType.xdEditorWindow). Остальные методы и свойства работают как с окном редактора, так и с окном конструктора (XdWindowType.xdDesignerWindow). Кроме того, как и для всех членов объектной модели InfoPath, при вызове из шаблона формы поддержка методов и свойств может изменяться в зависимости от уровня безопасности и метода развертывания формы.

Имя Описание Поддержка типов окон

ActivateM:Microsoft.Office.InfoPath.Window.Close

Обозначает окно как активное в данный момент окно.

Типы xdDesignWindow и xdEditorWindow

ActiveP:Microsoft.Office.InfoPath.Window.Width

Возвращает логическое (Boolean) значение, указывающее, является ли окно активным в данный момент.

Типы xdDesignWindow и xdEditorWindow

CaptionP:Microsoft.Office.InfoPath.UserPermission.Permission

Свойство чтения и записи, которое возвращает или задает текст заголовка окна, представленного объектом Window.

Только тип xdEditorWindow

CloseM:Microsoft.Office.InfoPath.Window.Close(System.Boolean)

Закрывает окно.

Только тип xdEditorWindow

CommandBarsP:Microsoft.Office.InfoPath.Window.Width

Возвращает ссылку на объект Microsoft Office CommandBars.

Типы xdDesignWindow и xdEditorWindow

HeightP:Microsoft.Office.InfoPath.Window.Width

Свойство чтения и записи с типом "длинное целое", которое указывает высоту окна, представленную объектом Window и измеряемую в точках.

Типы xdDesignWindow и xdEditorWindow

LeftP:Microsoft.Office.InfoPath.Window.XmlForm

Свойство чтения и записи с типом "длинное целое", которое указывает горизонтальную позицию окна, представленную объектом Window и измеряемую в точках.

Типы xdDesignWindow и xdEditorWindow

Свойство MailEnvelope

Возвращает ссылку на объект MailEnvelopeObject.

Только тип xdEditorWindow

TaskPanesP:Microsoft.Office.InfoPath.Window.Width

Возвращает ссылку на семейство TaskPanesCollection.

Типы xdDesignWindow и xdEditorWindow

TopP:Microsoft.Office.InfoPath.Window.XmlForm

Свойство чтения и записи с типом "длинное целое", которое указывает вертикальную позицию окна, представленную объектом Window и измеряемую в точках.

Типы xdDesignWindow и xdEditorWindow

WindowTypeP:Microsoft.Office.InfoPath.Window.XmlForm

Возвращает номер, указывающий тип окна на основе нумерации XdWindowType.

Типы xdDesignWindow и xdEditorWindow

WidthP:Microsoft.Office.InfoPath.Window.Width

Свойство чтения и записи с типом "длинное целое", которое указывает ширину окна, представленную объектом Window и измеряемую в точках.

Типы xdDesignWindow и xdEditorWindow

WindowStateP:Microsoft.Office.InfoPath.Window.Top

Свойство чтения и записи с типом XdWindowState, которое возвращает или задает состояние окна, представленное объектом Window.

Типы xdDesignWindow и xdEditorWindow

Свойство XDocument

Возвращает ссылку на объект _XDocument, связанный с окном.

Только тип xdEditorWindow

Использование интерфейсов WindowsCollection и Window

Доступ к интерфейсу WindowsCollection предоставляется через свойство Windows интерфейса Application. При использовании интерфейса WindowsCollection для доступа к окнам форм используется индексатор (в Visual C#) или передача длинного целого для свойства Item (в Visual Basic), чтобы вернуть ссылку на экземпляр интерфейса WindowObject. Например, следующий код задает ссылку на первый объект WindowObject, содержащийся в WindowsCollection.

WindowObject objWindow = thisApplication.Windows[0];
Dim objWindow As WindowObject = thisApplication.Windows(0)

Однако доступ к открытому в данный момент окну можно получить и непосредственно, используя свойство ActiveWindow интерфейса Application без использования семейства WindowsCollection, что демонстрируется в следующем коде.

WindowObject objWindow = thisApplication.ActiveWindow;
Dim objWindow As WindowObject = thisApplication.ActiveWindow
ЗаметкаЗаметка

При отладке проекта InfoPath с управляемым кодом свойство ActiveWindow всегда будет возвращать null, поскольку окно отладки активно.

Доступ к WindowObject также можно получить с помощью свойства Window интерфейса View, связанного с базовым XML-документом формы. Свойство View интерфейса XDocument используется для доступа к объекту View. Например, следующий код задает ссылку на объект WindowObject, который связан с представлением базового XML-документа формы.

WindowObject objWindow = thisXDocument.View.Window;
Dim objWindow As WindowObject = thisXDocument.View.Window
ЗаметкаЗаметка

Некоторые свойства и методы объекта Window предназначены только для редактирования окон. При использовании для разработки окон они будут возвращать ошибку. Свойства и методы, которые поддерживаются для каждого типа окон, перечислены в таблице, приведенной ранее в этой теме. Чтобы определить, с каким типом окна осуществляется работа, можно воспользоваться в коде свойством WindowType.