Como determinar o filho MDI ativo
Ocasionalmente, você desejará fornecer um comando que opere no controle que tem foco no formulário filho atualmente ativo. Por exemplo, suponha que pretendas copiar o texto selecionado da caixa de texto do formulário filho para a Prancheta. Você criaria um procedimento que copiasse o texto selecionado para a Área de Transferência usando o evento Click do item de menu Copiar no menu Editar padrão.
Como uma aplicação MDI pode ter muitas instâncias do mesmo formulário filho, o procedimento deve identificar qual formulário usar. Para especificar o formulário correto, use a propriedade ActiveMdiChild, que retorna o formulário filho que está em foco ou que esteve mais recentemente ativo.
Quando você tem vários controles em um formulário, você também precisa especificar qual controle está ativo. Como a propriedade ActiveMdiChild, a propriedade ActiveControl retorna o controle com o foco no formulário filho ativo. O procedimento abaixo ilustra um processo de cópia que pode ser acionado a partir de um menu de formulário filho, de um menu no formulário MDI, ou de um botão na barra de ferramentas.
Para determinar o filho MDI ativo (para copiar seu texto para a área de transferência)
Dentro de um método, copie o texto do controlo ativo do formulário filho ativo para o portapapéis.
Observação
Este exemplo pressupõe que haja um formulário pai MDI (
Form1
) que tenha uma ou mais janelas filho 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."); } } }
Ver também
- Aplicativos de interface Multiple-Document (MDI)
- Como criar formulários MDI parent
- Como criar formulários filho MDI
- Como: Enviar dados para o filho MDI ativo
- Como: Organizar formulários filho MDI
.NET Desktop feedback