Procedure: Het actieve MDI-onderliggende element bepalen
Soms wilt u een opdracht opgeven die werkt op het besturingselement dat de focus heeft op het huidige actieve onderliggende formulier. Stel dat u geselecteerde tekst van het tekstvak van het onderliggende formulier naar het Klembord wilt kopiëren. U maakt een procedure waarmee geselecteerde tekst naar het Klembord wordt gekopieerd met behulp van de Click gebeurtenis van het menu-item Kopiëren in het standaardmenu Bewerken.
Omdat een MDI-toepassing veel exemplaren van hetzelfde kindformulier kan hebben, moet de procedure weten welk formulier gebruikt moet worden. Als u het juiste formulier wilt opgeven, gebruikt u de eigenschap ActiveMdiChild, die het kinderformulier retourneert dat de focus heeft of dat het laatst actief was.
Wanneer u meerdere besturingselementen in een formulier hebt, moet u ook opgeven welk besturingselement actief is. Net als de eigenschap ActiveMdiChild retourneert de eigenschap ActiveControl het besturingselement met de focus op het actieve onderliggende formulier. De onderstaande procedure illustreert een kopieerprocedure die kan worden aangeroepen vanuit een onderliggend formuliermenu, een menu op het MDI-formulier of een werkbalkknop.
Het actieve MDI-kind bepalen (om de tekst naar het Klembord te kopiëren)
Kopieer in een methode de tekst van het actieve besturingselement van het actieve onderliggende formulier naar het Klembord.
Notitie
In dit voorbeeld wordt ervan uitgegaan dat er een MDI-bovenliggende formulier (
Form1
) is met een of meer MDI-onderliggende vensters waarin een RichTextBox controle-element staat. Voor meer informatie, zie MDI Parent Forms maken.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."); } } }
Zie ook
.NET Desktop feedback