Så här bestämmer du det aktiva MDI-underordnat
Ibland vill du ange ett kommando som fungerar på den kontroll som har fokus på det aktiva underordnade formuläret. Anta till exempel att du vill kopiera markerad text från det underordnade formulärets textruta till Urklipp. Du skapar en procedur som kopierar markerad text till Urklipp med hjälp av Click händelse av menyalternativet Kopiera på standardmenyn Redigera.
Eftersom en MDI-applikation kan ha många instanser av samma barnformulär, måste proceduren veta vilket formulär som ska användas. Om du vill ange rätt formulär använder du egenskapen ActiveMdiChild, som returnerar det underordnade formuläret som har fokus eller som senast var aktivt.
När du har flera kontroller i ett formulär måste du också ange vilken kontroll som är aktiv. Precis som egenskapen ActiveMdiChild returnerar egenskapen ActiveControl kontrollen med fokus på det aktiva underordnade formuläret. Proceduren nedan illustrerar en kopieringsprocedur som kan anropas från en underordnad formulärmeny, en meny i MDI-formuläret eller en verktygsfältsknapp.
För att fastställa det aktiva MDI-barnfönstret för att kopiera dess text till Urklipp
Inom en metod kopierar du texten för den aktiva kontrollen av det aktiva barnformuläret till urklipp.
Notera
Det här exemplet förutsätter att det finns ett överordnat MDI-formulär (
Form1
) som har ett eller flera underordnade MDI-fönster som innehåller en RichTextBox-kontroll. Mer information finns i Skapa överordnade MDI-formulär.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."); } } }
Se även
.NET Desktop feedback