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 使用 EventManager 类和 类的成员FormEvents在表单代码文件的 InternalStartup 方法中生成代码,以将事件绑定到其事件处理程序。 有关如何在 InfoPath 设计模式下添加事件处理程序的信息,请参阅如何:添加事件处理程序。

ContextChanged 事件是使用委托绑定的ContextChangedEventHandler

上下文节点是映射到与包含当前 XML 选择的容器(或项目)相对应的视图的 XML 节点。 例如,如果视图中的当前选择是文本框,则上下文节点是文本框绑定到的节点。 如果当前选择为重复节,则上下文节点是该项目的节点。 如果选择了两个重复节,则上下文节点是两个映射到此视图的项目的祖先 XML 节点。

ContextChanged 事件是异步的。 它不会在每次更改上下文节点时激发,而是在应用程序停止处理其他事件后激发。

当基础 XML 文档加载或视图发生更改时,ContextChanged 事件将在 和 ViewSwitched 事件发生后Loading发生。

UndoRedo当 对象的 属性ContextChangedEventArgstrue 时,上下文更改是由用户的撤消或重做操作而不是显式用户上下文更改引起的。 作为对撤消或恢复操作的响应,应该避免在 ContextChanged 事件中执行修改基础 XML 文档的操作,因为这些操作可能会影响用户将数据恢复到以前的状态。

对于“格式文本框”控件,不会因 XHTML 内容中的上下文更改(即控件中格式文本的选定内容更改)而引发 ContextChanged 事件。 方法 GetContextNodes() 可用于确定格式文本框控件中的选择。

可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。

适用于