Compartilhar via


Como: Determinar o filho MDI ativo

Ocasionalmente, você desejará fornecer um comando que opera sobre o controle que tem foco no formulário filho ativo no momento. Por exemplo, suponha que você deseja copiar o texto selecionado da caixa de texto do formulário filho para a Área de Transferência. Você criaria um procedimento que copia texto selecionado para a Área de Transferência usando o evento Click do item de menu Copiar do menu padrão Editar.

Como um aplicativo MDI pode ter muitas instâncias do mesmo formulário filho, o procedimento precisa saber qual formulário usar. Para especificar o formato correto, use a propriedade ActiveMdiChild, que retorna o formulário filho que tem o foco ou que estava ativo mais recentemente.

Quando você tiver vários controles em um formulário, você também precisará especificar qual controle está ativo. Como a propriedade ActiveMdiChild, a propriedade ActiveControl retorna o controle com o foco no formulário ativo filho. O procedimento abaixo ilustra um procedimento de cópia que pode ser chamado a partir de um menu de formulário filho, um menu no formulário MDI, ou um botão de barra de ferramentas.

Para determinar o filho MDI ativo (para copiar o texto para a Área de transferência)

  • Dentro de um método, copie o texto o controle ativo do formulário filho ativo para a área de transferência.

    ObservaçãoObservação

    Este exemplo assume que há um formulário pai MDI (Form1) que possui uma ou mais janelas filho MDI que contém um controle RichTextBox. Para obter mais informações, consulte Criando formulários pai MDI.

    Public Sub mniCopy_Click(ByVal sender As Object, _
       ByVal e As System.EventArgs) Handles mniCopy.Click
    
       ' Determine the active child form.
       Dim activeChild As Form = Me.ActiveMDIChild
    
       ' If there is an active child form, find the active control, which
       ' in this example should be a RichTextBox.
       If (Not activeChild Is Nothing) Then
          Dim theBox As RichTextBox = _
            TryCast(activeChild.ActiveControl, RichTextBox)
    
          If (Not theBox Is Nothing) Then
             'Put selected text on Clipboard.
             Clipboard.SetDataObject(theBox.SelectedText)
          Else
             MessageBox.Show("You need to select a RichTextBox.")
          End If
       End If
    End Sub
    
    protected void mniCopy_Click (object sender, System.EventArgs e)
    {
       // Determine the active child form.
       Form activeChild = this.ActiveMdiChild;
    
       // If there is an active child form, find the active control, which
       // in this example should be a RichTextBox.
       if (activeChild != null)
       {  
          try
          {
             RichTextBox theBox = (RichTextBox)activeChild.ActiveControl;
             if (theBox != null)
             {
                // Put the selected text on the Clipboard.
                Clipboard.SetDataObject(theBox.SelectedText);
    
             }
          }
          catch
          {
             MessageBox.Show("You need to select a RichTextBox.");
          }
       }
    }
    
    private void menuItem5_Click(System.Object sender, System.EventArgs e) 
    {
       // Determine the active child form.
       Form activeChild = this.get_ActiveMdiChild();
    
       // If there is an active child form, find the active control, which
       // in this example should be a RichTextBox.
       if ( activeChild  != null  ) 
       {
          try 
          {
             RichTextBox theBox = ((RichTextBox)(activeChild.get_ActiveControl()));
             if ( theBox  != null  ) 
             {
                // Create a new instance of the DataObject interface.
                IDataObject data = Clipboard.GetDataObject();
                // If the data is text, then set the text of the 
                // RichTextBox to the text in the clipboard.
                if (data.GetDataPresent(DataFormats.Text)) 
                {
                   theBox.set_SelectedText(data.GetData(DataFormats.Text).ToString());
                }
             }
          }
          catch(System.Exception exp)
          {
    
             MessageBox.Show("You need to select a RichTextBox.");
          }
       }
    }
    

Consulte também

Tarefas

Como: Criar formulários-pai MDI

Como: Criar formulários filho MDI

Como: Enviar dados para o filho MDI ativo

Como: Organizar formulários filho MDI

Outros recursos

Aplicativos de Interface de Documentos Múltiplos (MDI)