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)
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
.NET Desktop feedback