方法: アクティブな MDI 子を特定する
場合によっては、現在アクティブな子フォームにフォーカスがあるコントロールに対して動作するコマンドを指定する必要があります。 たとえば、選択したテキストを子フォームのテキスト ボックスからクリップボードにコピーするとします。 標準の [編集] メニューの [コピー] メニュー項目の Click イベントを使用して、選択したテキストをクリップボードにコピーするプロシージャを作成します。
MDI アプリケーションには同じ子フォームのインスタンスを多数含めることができるため、プロシージャは使用するフォームを認識する必要があります。 正しいフォームを指定するには、ActiveMdiChild プロパティを使用します。このプロパティは、フォーカスのある子フォームまたは最も最近アクティブだった子フォームを返します。
フォームに複数のコントロールがある場合は、アクティブなコントロールを指定する必要もあります。 ActiveMdiChild プロパティと同様に、ActiveControl プロパティは、アクティブな子フォームにフォーカスがあるコントロールを返します。 次の手順は、子フォーム メニュー、MDI フォームのメニュー、またはツール バー ボタンから呼び出すことができるコピー プロシージャを示しています。
アクティブな MDI 子を特定するには (テキストをクリップボードにコピーする)
メソッド内で、アクティブな子フォームのアクティブなコントロールのテキストをクリップボードにコピーします。
手記
この例では、RichTextBox コントロールを含む 1 つ以上の MDI 子ウィンドウを持つ MDI 親フォーム (
Form1
) があることを前提としています。 詳細については、「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."); } } }
関連項目
- Multiple-Document インターフェイス (MDI) アプリケーション
- 方法: MDI 親フォーム を作成する
- 方法: MDI 子フォーム を作成する
- 方法: アクティブな MDI 子 にデータを送信する
- 方法: MDI 子フォームの を配置する
.NET Desktop feedback