Como determinar o filho MDI ativo
Em certas ocasiões, você quererá dar um comando que opere no controle que está com foco no formulário filho atualmente ativo. Por exemplo, suponha que você queira copiar o texto selecionado da caixa de texto do formulário filho para a Prancheta. Você criaria um procedimento que copia o texto selecionado para a Área de Transferência usando o evento Click 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 propriedade ActiveMdiChild, que retorna o formulário filho que tem o foco ou que esteve ativo recentemente.
Quando você tem vários controles em um formulário, também precisa especificar qual controle está ativo. Assim como a propriedade ActiveMdiChild, a propriedade ActiveControl 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, no menu do formulário MDI ou através de um botão na barra de ferramentas.
Para determinar o filho MDI ativo (para copiar seu texto para a área de transferência)
No método, copie o texto do controle ativo do formulário filho ativo para a área de transferência.
Nota
Este exemplo pressupõe que haja um formulário pai MDI (
Form1
) que tenha uma ou mais janelas filhas MDI contendo 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."); } } }
Consulte também
.NET Desktop feedback