FormEvents.ContextChanged Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создается после изменения узла контекста.
public:
abstract event Microsoft::Office::InfoPath::ContextChangedEventHandler ^ ContextChanged;
public abstract event Microsoft.Office.InfoPath.ContextChangedEventHandler ContextChanged;
member this.ContextChanged : Microsoft.Office.InfoPath.ContextChangedEventHandler
Public MustOverride Custom Event ContextChanged As ContextChangedEventHandler
Тип события
Исключения
Попытка разработчика привязать событие в другом местоположении, чем метод InternalStartup.
Примеры
В следующем примере предполагается, что форма имеет элемент управления Текстовое поле, привязанный к полю с именем DisplayContext, а также элементы управления, привязанные к другим полям и группам в форме. При перемещении выделения на другие поля или группы отображается имя поля или группы в элементе управления Текстовое поле, привязанном к полю DisplayContext.
public void FormEvents_ContextChanged(object sender,
ContextChangedEventArgs e)
{
if (e.ChangeType == "ContextNode")
{
// Position a XPathNavigator on the DisplayContext field.
XPathNavigator root, txtbox;
root = this.MainDataSource.CreateNavigator();
txtbox = root.SelectSingleNode("/my:myFields/my:DisplayContext",
this.NamespaceManager);
// Set DisplayContext with the name of the current context.
txtbox.SetValue(e.Context.Name);
return;
}
}
Public Sub FormEvents_ContextChanged(ByVal sender As Object, _
ByVal e As ContextChangedEventArgs)
If (e.ChangeType = "ContextNode") Then
' Position a XPathNavigator on the DisplayContext field.
Dim root, txtbox As XPathNavigator
root = Me.MainDataSource.CreateNavigator
txtbox = root.SelectSingleNode("/my:myFields/my:DisplayContext",
Me.NamespaceManager)
' Set DisplayContext with the name of the current context.
txtbox.SetValue(e.Context.Name)
Return
End If
End Sub
Комментарии
Важно! Событие ContextChanged не предназначено для создания экземпляра разработчиком в коде формы. Следует добавлять обработчики событий только для событий уровня формы из пользовательского интерфейса режима разработки Microsoft InfoPath. При добавлении обработчика событий в шаблон формы из пользовательского интерфейса режима конструктора InfoPath создает код в методе InternalStartup файла кода формы с помощью EventManager класса и члена класса для привязки FormEvents события к его обработчику событий. Сведения о порядке добавления обработчиков событий в режиме конструктора InfoPath см. в разделе How to: Add an Event Handler.
Событие ContextChanged связывается с помощью делегата ContextChangedEventHandler .
Узлом контекста является узел XML, сопоставленный представлению, которое соответствует контейнеру (или элементу) с текущим выделенным кодом XML. Например, если текущим выделением в представлении является текстовое поле, узлом контекста является узел, к которому привязано текстовое поле. Если текущим выделением является повторяющийся раздел, узлом контекста является узел для этого элемента. Если выделены два повторяющиеся раздела, узлом контекста является родительский узел XML для обоих элементов, сопоставленных представлению.
Событие ContextChanged является асинхронным. Его не активирует каждое изменение в узле контекста; вместо этого, оно активируется после того, как приложение закончит обработку других событий.
При загрузке базового XML-документа или изменении представления событие ContextChanged будет возникать после Loading событий и ViewSwitched .
UndoRedo Если свойство ContextChangedEventArgs объекта имеет значение true, изменение контекста было вызвано операцией отмены или повтора пользователя, а не явным изменением контекста пользователя. Следует избегать операций в событии ContextChanged, которые изменяют связанный XML-документ, в ответ на операции отмены или возвращения, так как они могут препятствовать возвращению данных пользователем в предыдущее состояние.
Для элементов управления Форматированный текст событие ContextChanged не создается на изменения контекста в содержимом XHTML, то есть на выделения форматированного текста в элементе управления. Метод GetContextNodes() можно использовать для определения выделения в элементах управления ФОРМАТИРОВАННОГО текстового поля.
Доступ к этому типу или элементу предоставляется только из кода, выполняющегося в формах, открытых в Microsoft InfoPath Filler.