다음을 통해 공유


방법: 활성 MDI 자식 확인

경우에 따라 현재 활성 자식 양식에 포커스가 있는 컨트롤에서 작동하는 명령을 제공하려고 합니다. 예를 들어 선택한 텍스트를 자식 양식의 텍스트 상자에서 클립보드로 복사하려는 경우를 가정해 보겠습니다. 표준 편집 메뉴에서 복사 메뉴 항목의 Click 이벤트를 사용하여 선택한 텍스트를 클립보드에 복사하는 프로시저를 만듭니다.

MDI 애플리케이션에는 동일한 자식 양식의 여러 인스턴스가 있을 수 있으므로 프로시저에서 사용할 양식을 알아야 합니다. 올바른 양식을 지정하려면 포커스가 있거나 가장 최근에 활성화된 자식 양식을 반환하는 ActiveMdiChild 속성을 사용합니다.

양식에 여러 컨트롤이 있는 경우 활성 상태인 컨트롤을 지정해야 합니다. ActiveMdiChild 속성과 마찬가지로 ActiveControl 속성은 활성 자식 양식에 포커스가 있는 컨트롤을 반환합니다. 아래 프로시저에서는 자식 양식 메뉴, MDI 양식의 메뉴 또는 도구 모음 단추에서 호출할 수 있는 복사 프로시저를 보여 줍니다.

활성 MDI 자식(클립보드에 해당 텍스트 복사)을 확인하려면 다음을 수행합니다.

  1. 메서드 내에서 활성 자식 양식의 활성 컨트롤 텍스트를 클립보드에 복사합니다.

    참고

    이 예제에서는 RichTextBox 컨트롤을 포함하는 하나 이상의 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.");  
          }  
       }  
    }  
    

참고 항목