次の方法で共有


方法: アクティブな MDI 子を特定する

場合によっては、現在アクティブな子フォームにフォーカスがあるコントロールに対して動作するコマンドを指定する必要があります。 たとえば、選択したテキストを子フォームのテキスト ボックスからクリップボードにコピーするとします。 標準の [編集] メニューの [コピー] メニュー項目の Click イベントを使用して、選択したテキストをクリップボードにコピーするプロシージャを作成します。

MDI アプリケーションには同じ子フォームのインスタンスを多数含めることができるため、プロシージャは使用するフォームを認識する必要があります。 正しいフォームを指定するには、ActiveMdiChild プロパティを使用します。このプロパティは、フォーカスのある子フォームまたは最も最近アクティブだった子フォームを返します。

フォームに複数のコントロールがある場合は、アクティブなコントロールを指定する必要もあります。 ActiveMdiChild プロパティと同様に、ActiveControl プロパティは、アクティブな子フォームにフォーカスがあるコントロールを返します。 次の手順は、子フォーム メニュー、MDI フォームのメニュー、またはツール バー ボタンから呼び出すことができるコピー プロシージャを示しています。

アクティブな MDI 子を特定するには (テキストをクリップボードにコピーする)

  1. メソッド内で、アクティブな子フォームのアクティブなコントロールのテキストをクリップボードにコピーします。

    この例では、Form1 コントロールを含む 1 つ以上の MDI 子ウィンドウを持つ MDI 親フォーム (RichTextBox) があることを前提としています。 詳細については、「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.");
          }
       }
    }
    

こちらも参照ください