Procedura: Determinare il figlio MDI attivo
A volte, vorrai fornire un comando che operi sul controllo attivo nel modulo figlio attualmente in uso. Si supponga, ad esempio, di voler copiare il testo selezionato dalla casella di testo del modulo figlio negli Appunti. Creare una procedura che copia il testo selezionato negli Appunti utilizzando l'evento Click della voce di menu Copia sul menu standard Modifica.
Poiché un'applicazione MDI può avere molte istanze dello stesso modulo figlio, la procedura deve conoscere quale modulo usare. Per specificare il formulario corretto, utilizzare la proprietà ActiveMdiChild, che restituisce il formulario figlio con il focus o che è stato attivo più di recente.
Quando hai diversi controlli in un modulo, devi anche specificare quale controllo è attivo. Analogamente alla proprietà ActiveMdiChild, la proprietà ActiveControl restituisce il controllo sul form figlio attualmente attivo. La procedura seguente illustra un procedimento di copia che può essere attivato tramite un menu di una finestra figlia, un menu della finestra MDI o un pulsante della barra degli strumenti.
Per determinare il figlio MDI attivo (per copiarne il testo nella Clipboard)
All'interno di un metodo, copiare il testo del controllo attivo della finestra figlio attiva negli Appunti.
Nota
In questo esempio si presuppone che sia presente un modulo padre MDI (
Form1
) con una o più finestre figlie MDI contenenti un controllo RichTextBox. Per altre informazioni, vedere Creazione di moduli 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."); } } }
Vedere anche
.NET Desktop feedback