Compartilhar via


FormEvents.ContextChanged Evento

Definição

Ocorre após as alterações do nó de contexto.

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 

Tipo de evento

Exceções

O desenvolvedor tentou associar o evento em algum local diferente do método InternalStartup .

Exemplos

O exemplo a seguir pressupõe que seu formulário tenha um controle caixa de texto associado a um campo chamado DisplayContext, bem como controles associados a outros campos e grupos no formulário. Mover a seleção para diferentes campos e grupos exibe o nome do campo ou grupo na Caixa de Texto vinculada a 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

Comentários

Importante: o evento ContextChanged não deve ser instanciado pelo desenvolvedor no código de formulário. Você só deve adicionar manipuladores de eventos para eventos no nível do formulário na interface do usuário do modo de design do Microsoft InfoPath. Quando você adiciona um manipulador de eventos ao modelo de formulário da interface do usuário do modo de design, o InfoPath gera código no método InternalStartup do arquivo de código de formulário usando a EventManager classe e o FormEvents membro da classe para associar o evento ao manipulador de eventos. Para obter informações sobre como adicionar manipuladores de eventos no modo de design do InfoPath, consulte Como adicionar um manipulador de eventos.

O evento ContextChanged está vinculado usando o ContextChangedEventHandler delegado.

O nó de contexto é o nó XML mapeado para a exibição que corresponde ao contêiner (ou item) com a seleção XML atual. Por exemplo, se a seleção atual no modo de exibição estiver em uma caixa de texto, o nó de contexto será o nó ao qual a caixa de texto está vinculada. Se a seleção atual for uma seção repetida, o nó de contexto será o nó para esse item. Se duas seções repetidas forem selecionadas, o nó de contexto será o nó XML ancestral para ambos os itens mapeados para a exibição.

O evento ContextChanged é assíncrono. Ele não dispara em todas as alterações no nó de contexto; Em vez disso, ele é acionado depois que o aplicativo parou de processar outros eventos.

Quando o documento XML subjacente for carregado ou quando ocorrer uma alteração de exibição, o evento ContextChanged ocorrerá após a ocorrência dos Loading eventos e ViewSwitched .

Quando a UndoRedo propriedade do ContextChangedEventArgs objeto é verdadeira, a alteração de contexto foi causada pela operação de desfazer ou refazer de um usuário, em vez de uma alteração explícita do contexto do usuário. As operações executadas no evento ContextChanged que modificam o documento XML subjacente devem ser evitadas em resposta a operações de desfazer ou refazer, pois podem interferir na intenção do usuário de reverter dados para um estado anterior.

Para controles rich text box, o evento ContextChanged não é gerado para alterações de contexto no conteúdo XHTML, ou seja, alterações de seleção no texto avançado no controle. O GetContextNodes() método pode ser usado para determinar a seleção nos controles rich text box.

This type or member can be accessed only from code running in forms opened in Microsoft InfoPath Filler.

Aplica-se a