Gewusst wie: Bestimmen des aktiven untergeordneten MDI-Elements

Es kann durchaus vorkommen, dass Sie einen Befehl bereitstellen möchten, der auf das Steuerelement angewendet wird, das im aktuell aktiven untergeordneten Formular fokussiert ist. Nehmen wir an, dass markierter Text aus dem Textfeld des untergeordneten Formulars in die Zwischenablage kopiert werden soll. Hierfür wird in der Regel eine Prozedur erstellt, durch die markierter Text über das Click-Ereignis des Menüelements Kopieren im Standardmenü Bearbeiten in die Zwischenablage kopiert wird.

Da eine MDI-Anwendung viele Instanzen desselben untergeordneten Formulars verwenden kann, muss der Prozedur mitgeteilt werden, welches Formular verwendet werden soll. Verwenden Sie zum Angeben des richtigen Formulars die ActiveMdiChild-Eigenschaft, die das untergeordnete Formular zurückgibt, das fokussiert ist oder zuletzt aktiv war.

Wenn in einem Formular mehrere Steuerelemente verwendet werden, muss auch angegeben werden, welches Steuerelement aktiv ist. Wie bei der ActiveMdiChild-Eigenschaft wird von der ActiveControl-Eigenschaft das Steuerelement zurückgegeben, das im aktiven untergeordneten Formular fokussiert ist. Mit der folgenden Prozedur wird eine Kopierprozedur veranschaulicht, die von einem Menü eines untergeordneten Formulars, einem Menü im MDI-Formular oder einer Symbolleisten-Schaltfläche aufgerufen werden kann.

So bestimmen Sie das aktive untergeordnete MDI-Element, um seinen Text in die Zwischenablage zu kopieren

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

    Tipp

    In diesem Beispiel wird vorausgesetzt, dass ein übergeordnetes MDI-Formular (Form1) vorhanden ist. Dieses soll ein oder mehrere untergeordnete MDI-Fenster aufweisen, in denen ein RichTextBox-Steuerelement enthalten ist. Weitere Informationen finden Sie unter Erstellen übergeordneter MDI-Formulare.

    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.");
          }
       }
    }
    
    private void menuItem5_Click(System.Object sender, System.EventArgs e) 
    {
       // Determine the active child form.
       Form activeChild = this.get_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.get_ActiveControl()));
             if ( theBox  != null  ) 
             {
                // Create a new instance of the DataObject interface.
                IDataObject data = Clipboard.GetDataObject();
                // If the data is text, then set the text of the 
                // RichTextBox to the text in the clipboard.
                if (data.GetDataPresent(DataFormats.Text)) 
                {
                   theBox.set_SelectedText(data.GetData(DataFormats.Text).ToString());
                }
             }
          }
          catch(System.Exception exp)
          {
    
             MessageBox.Show("You need to select a RichTextBox.");
          }
       }
    }
    

Siehe auch

Aufgaben

Gewusst wie: Erstellen von übergeordneten MDI-Formularen

Gewusst wie: Erstellen von untergeordneten MDI-Formularen

Gewusst wie: Senden von Daten an das aktive untergeordnete MDI-Element

Gewusst wie: Anordnen von untergeordneten MDI-Formularen

Weitere Ressourcen

MDI-Anwendungen (Multiple Document Interface)