Vorgehensweise: Bestimmen des aktiven untergeordneten MDI-Elements

Gelegentlich sollten Sie einen Befehl bereitstellen, der auf dem Steuerelement ausgeführt wird, das sich auf das derzeit aktive untergeordnete Formular bezieht. Angenommen, Sie möchten markierten Text aus dem Textfeld des untergeordneten Formulars in die Zwischenablage kopieren. Dazu führen Sie Schritte aus, die mithilfe des Click-Ereignisses des Menüelements „Kopieren“ im Standardmenü „Bearbeiten“ ausgewählten Text in die Zwischenablage kopiert.

Da eine MDI-Anwendung viele Instanzen desselben untergeordneten Formulars aufweisen kann, muss das Verfahren 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 besitzt oder das zuletzt aktiv war.

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

So bestimmen Sie das aktive untergeordnete MDI-Element (um den 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.");  
          }  
       }  
    }  
    

Weitere Informationen