방법: 활성 MDI 자식 확인
업데이트: 2007년 11월
경우에 따라 현재 활성화된 자식 폼에 포커스가 있는 컨트롤에서 동작하는 명령을 제공할 수 있습니다. 예를 들어 자식 폼의 텍스트 상자에서 선택한 텍스트를 클립보드에 복사하려면 표준 편집 메뉴에 있는 복사 메뉴 항목의 Click 이벤트를 사용하여 선택된 텍스트를 클립보드에 복사하는 프로시저를 만듭니다.
MDI 응용 프로그램에는 동일한 자식 폼의 인스턴스가 여러 개 있을 수 있으므로 사용할 폼을 프로시저에 지정해야 합니다. 올바른 폼을 지정하려면 포커스가 있는 자식 폼 또는 가장 최근에 활성화된 자식 폼을 반환하는 ActiveMdiChild 속성을 사용합니다.
하나의 폼에 컨트롤이 여러 개 있는 경우에도 활성 컨트롤을 지정해야 합니다. ActiveMdiChild 속성과 마찬가지로 ActiveControl 속성도 활성 자식 폼에서 포커스가 있는 컨트롤을 반환합니다. 다음 프로시저는 자식 폼 메뉴, MDI 폼의 메뉴 또는 도구 모음 단추를 통해 호출할 수 있는 복사 프로시저를 보여 줍니다.
활성 MDI 자식을 확인하여 해당 텍스트를 클립보드에 복사하려면
메서드에서 활성 자식 폼에 있는 활성 컨트롤의 텍스트를 클립보드에 복사합니다.
참고: 이 예제에서는 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 Try Dim theBox As RichTextBox = _ Ctype(activeChild.ActiveControl, RichTextBox) If (Not theBox Is Nothing) Then ' Put selected text on Clipboard. Clipboard.SetDataObject(theBox.SelectedText) End If Catch MessageBox.Show("You need to select a RichTextBox.") End Try 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."); } } }
private void menuItem5_Click(System.Object sender, System.EventArgs e) { // Determine the active child form. Form activeChild = this.get_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.get_ActiveControl())); if ( theBox != null ) { // Create a new instance of the DataObject interface. IDataObject data = Clipboard.GetDataObject(); // If the data is text, then set the text of the // RichTextBox to the text in the clipboard. if (data.GetDataPresent(DataFormats.Text)) { theBox.set_SelectedText(data.GetData(DataFormats.Text).ToString()); } } } catch(System.Exception exp) { MessageBox.Show("You need to select a RichTextBox."); } } }