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çã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