Compartilhar via


Como determinar os filhos ativos MDI

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

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 formulário correto, use a ActiveMdiChild propriedade, que retorna o formulário filho que tem o foco ou que foi ativo mais recentemente.

Se houver vários controles em um formulário, também será necessário especificar qual deles está ativo. Como a propriedade, a ActiveMdiChildActiveControl propriedade retorna o controle com o foco no formulário filho ativo. O procedimento abaixo ilustra um procedimento de cópia que pode ser chamado de um menu de formulário filho, um menu no formulário MDI ou um botão de barra de ferramentas.

Determinar o filho MDI ativo (para copiar o texto para a área de transferência)

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

    Observação

    Este exemplo pressupõe que há um formulário pai MDI (Form1) que tem uma ou mais janelas filho MDI contendo um RichTextBox controle. 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.");  
          }  
       }  
    }  
    

Confira também