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)
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ż
.NET Desktop feedback