Procedura: determinare il figlio MDI attivo
Occasionalmente può essere utile fornire un comando che agisca sul controllo con lo stato attivo sul form figlio attualmente attivo. Se si desidera, ad esempio, copiare il testo selezionato dalla casella di testo del form figlio negli Appunti, creare una routine che copi il testo selezionato negli Appunti mediante l'evento Click della voce Copia del menu standard Modifica.
Poiché un'applicazione MDI può avere molte istanze dello stesso form figlio, è necessario specificare quale form deve essere utilizzato dalla routine. Per specificare il form corretto, utilizzare la proprietà ActiveMdiChild che restituisce il form figlio con lo stato attivo o quello che è stato attivato più recentemente.
Quando su un form sono disponibili diversi controlli è necessario specificare anche quale sia il controllo attivo. Analogamente alla proprietà ActiveMdiChild, la proprietà ActiveControl restituisce il controllo con lo stato attivo sul form figlio attivo. Di seguito è illustrata una routine di copia che può essere chiamata dal menu di un form figlio, da un menu sul form MDI o da un pulsante della barra degli strumenti.
Per determinare il figlio MDI attivo e copiarne il testo negli Appunti
In un metodo, copiare negli Appunti il testo del controllo attivo del form figlio attivo.
Nota
Nell'esempio qui di seguito si presume l'esistenza di un form padre MDI (Form1) con una o più finestre figlio MDI contenenti un controllo RichTextBox. Per ulteriori informazioni, vedere Creazione di form padre 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."); } } }
Vedere anche
Attività
Procedura: creare form padre MDI
Procedura: creare form figlio MDI
Procedura: inviare dati al figlio MDI attivo
Procedura: disporre i form figlio MDI
Altre risorse
Applicazioni MDI (Interfaccia a documenti multipli, Multiple-Document Interface)