Freigeben über


So bestimmen Sie das aktive MDI-Kindfenster

Gelegentlich möchten Sie einen Befehl ausführen, der auf dem Steuerelement ausgeführt wird, das den Fokus im aktuell aktiven Kindformular hat. Angenommen, Sie möchten ausgewählten Text aus dem Textfeld des Unterformulars in die Zwischenablage kopieren. Sie erstellen eine Prozedur, die ausgewählten Text mithilfe Click des Ereignisses des Menüelements "Kopieren" im Standardmenü "Bearbeiten" in die Zwischenablage kopiert.

Da eine MDI-Anwendung viele Instanzen desselben Kindformulars haben kann, muss die Prozedur wissen, welches Formular verwendet werden soll. Um das richtige Formular anzugeben, verwenden Sie die ActiveMdiChild Eigenschaft, die das untergeordnete Formular zurückgibt, das den Fokus hat oder die zuletzt aktiv war.

Wenn Sie über mehrere Steuerelemente in einem Formular verfügen, müssen Sie auch angeben, welches Steuerelement aktiv ist. Wie bei der ActiveMdiChild Eigenschaft gibt die ActiveControl Eigenschaft das Steuerelement zurück, das den Fokus auf dem aktiven untergeordneten Formular hat. Das folgende Verfahren veranschaulicht eine Kopierprozedur, die aus einem untergeordneten Formularmenü, einem Menü im MDI-Formular oder einer Symbolleistenschaltfläche aufgerufen werden kann.

Um das aktive MDI-Kindfenster zu bestimmen (um dessen Text in die Zwischenablage zu kopieren)

  1. Kopieren Sie in einer Methode den Text des aktiven Steuerelements des aktiven untergeordneten Formulars in die Zwischenablage.

    Hinweis

    In diesem Beispiel wird davon ausgegangen, dass ein übergeordnetes MDI-Formular (Form1) mit einem oder mehreren untergeordneten MDI-Fenstern vorhanden ist, die ein RichTextBox-Steuerelement enthalten. Weitere Informationen finden Sie unter Erstellen von übergeordneten MDI-Formularen.

    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.");
          }
       }
    }
    

Siehe auch