Udostępnij za pośrednictwem


Porady: określanie elementu podrzędnego MDI Active

Przy okazji należy podać polecenie, które działa na kontrolce, która koncentruje się na aktualnie aktywnym formularzu podrzędnym. Załóżmy na przykład, że chcesz skopiować zaznaczony tekst z pola tekstowego formularza podrzędnego do Schowka. Można utworzyć procedurę, która kopiuje zaznaczony tekst do Schowka przy użyciu Click zdarzenia elementu menu Kopiuj w standardowym menu Edycja.

Ponieważ aplikacja MDI może mieć wiele wystąpień tego samego formularza podrzędnego, procedura musi wiedzieć, którego formularza użyć. Aby określić prawidłowy formularz, użyj ActiveMdiChild właściwości , która zwraca formularz podrzędny, który ma fokus lub który był ostatnio aktywny.

Jeśli masz kilka kontrolek w formularzu, musisz również określić, która kontrolka jest aktywna. ActiveMdiChild Podobnie jak właściwość, ActiveControl właściwość zwraca kontrolkę z fokusem na aktywnym formularzu podrzędnym. Poniższa procedura ilustruje procedurę kopiowania, którą można wywołać z menu formularza podrzędnego, menu w formularzu MDI lub przycisku paska narzędzi.

Aby określić aktywny element podrzędny MDI (aby skopiować jego tekst do Schowka)

  1. W ramach metody skopiuj tekst aktywnej kontrolki aktywnego formularza podrzędnego do Schowka.

    Uwaga

    W tym przykładzie przyjęto założenie, że istnieje formularz nadrzędny MDI (Form1), który zawiera co najmniej jedno okno podrzędne MDI zawierające kontrolkę RichTextBox . Aby uzyskać więcej informacji, zobacz Tworzenie formularzy nadrzędnych MDI.

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

Zobacz też