如何:決定作用中的 MDI 子系
有時候,您會想要提供一個命令,針對焦點位於目前作用中子表單上的控制項進行操作。 例如,假設您想要將選取的文字從子表單的文字輸入框複製到剪貼簿。 您會使用標準 [編輯] 功能表上 [複製] 功能表項目的 Click 事件,建立將選取的文字複製到剪貼簿的程序。
由於 MDI 應用程式可以有許多相同子表單的實例,因此程式必須知道要使用的表單。 若要指定正確的表單,請使用 ActiveMdiChild 屬性,這個屬性會傳回具有焦點或最近使用中的子表單。
當您在表單上有數個控制項時,您也需要指定哪個控制項為使用中。 如同 ActiveMdiChild 屬性,ActiveControl 屬性會傳回焦點位於作用中子表單的控制項。 下列程序說明可以從子表單功能表、MDI 表單或工具列按鈕呼叫的複製程序。
若要判斷使用中的 MDI 子系 (將其文字複製到剪貼簿)
在該方法中,將使用中子表單的作用中控制項文字複製到剪貼簿。
注意
此範例假設有一個 MDI 父表單 (
Form1
),其具有一或多個包含 RichTextBox 控制項的 MDI 子視窗。 如需詳細資訊,請參閱 建立 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."); } } }