방법: Office 문서에 Windows Forms 컨트롤 추가
디자인 타임에 문서 수준 프로젝트에서 Microsoft Office Excel 및 Microsoft Office Word 문서에 Windows Forms 컨트롤을 추가할 수 있습니다. 런타임에는 문서 수준 사용자 지정과 응용 프로그램 수준 추가 기능에서 컨트롤을 추가할 수 있습니다. 예를 들어, 사용자가 옵션 목록에서 선택할 수 있도록 ComboBox 컨트롤을 워크시트에 추가할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 항목에서는 다음 작업에 대해 설명합니다.
디자인 타임에 컨트롤 추가
런타임에 문서 수준 프로젝트에서 컨트롤 추가
런타임에 응용 프로그램 수준 추가 기능에서 컨트롤 추가
관련 비디오 데모를 보려면 How Do I: Add Controls to a Document Surface at Runtime?을 참조하십시오.
디자인 타임에 컨트롤 추가
디자인 타임에 다음과 같은 방법으로 문서 수준 프로젝트의 문서에 Windows Forms 컨트롤을 추가할 수 있습니다.
참고
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
Windows Forms 컨트롤을 문서에 끌어 놓으려면
문서를 디자이너에 표시하려면 Visual Studio에서 Excel 통합 문서 프로젝트나 Word 문서 프로젝트를 만들거나 엽니다. 프로젝트를 만드는 방법에 대한 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
도구 상자의 공용 컨트롤 탭에서 추가하려는 컨트롤을 클릭하고 문서에 끌어 놓습니다.
참고
Excel에서 컨트롤을 선택하면 수식 입력줄에 =EMBED("WinForms.Control.Host","")가 표시됩니다. 이 텍스트는 필요하므로 삭제해서는 안 됩니다.
문서에 Windows Forms 컨트롤을 그리려면
문서를 디자이너에 표시하려면 Visual Studio에서 Excel 통합 문서 프로젝트나 Word 문서 프로젝트를 만들거나 엽니다. 프로젝트를 만드는 방법에 대한 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
도구 상자의 공용 컨트롤 탭에서 추가하려는 컨트롤을 클릭합니다.
문서에서 컨트롤의 왼쪽 위 모퉁이가 위치할 지점을 클릭한 다음 컨트롤의 오른쪽 아래 모퉁이가 위치할 지점까지 끕니다.
지정된 위치 및 크기로 컨트롤이 문서에 추가됩니다.
참고
Excel에서 컨트롤을 선택하면 수식 입력줄에 =EMBED("WinForms.Control.Host","")가 표시됩니다. 이 텍스트는 필요하므로 삭제해서는 안 됩니다.
컨트롤을 한 번 클릭하여 문서에 Windows Forms 컨트롤을 추가하려면
문서를 디자이너에 표시하려면 Visual Studio에서 Excel 통합 문서 프로젝트나 Word 문서 프로젝트를 만들거나 엽니다. 프로젝트를 만드는 방법에 대한 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
도구 상자의 공용 컨트롤 탭에서 추가하려는 컨트롤을 클릭합니다.
문서에서 컨트롤을 추가하려는 위치를 클릭합니다.
기본 크기로 컨트롤이 문서에 추가됩니다.
참고
Excel에서 컨트롤을 선택하면 수식 입력줄에 =EMBED("WinForms.Control.Host","")가 표시됩니다. 이 텍스트는 필요하므로 삭제해서는 안 됩니다.
컨트롤을 두 번 클릭하여 문서에 Windows Forms 컨트롤을 추가하려면
문서를 디자이너에 표시하려면 Visual Studio에서 Excel 통합 문서 프로젝트나 Word 문서 프로젝트를 만들거나 엽니다. 프로젝트를 만드는 방법에 대한 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
도구 상자의 공용 컨트롤 탭에서 추가하려는 컨트롤을 두 번 클릭합니다.
활성 창이나 문서의 가운데에 컨트롤이 추가됩니다.
참고
Excel에서 컨트롤을 선택하면 수식 입력줄에 =EMBED("WinForms.Control.Host","")가 표시됩니다. 이 텍스트는 필요하므로 삭제해서는 안 됩니다.
Enter 키를 눌러 문서에 Windows Forms 컨트롤을 추가하려면
문서를 디자이너에 표시하려면 Visual Studio에서 Excel 통합 문서 프로젝트나 Word 문서 프로젝트를 만들거나 엽니다. 프로젝트를 만드는 방법에 대한 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
도구 상자의 공용 컨트롤 탭에서 추가하려는 컨트롤을 클릭하고 Enter 키를 누릅니다.
활성 창이나 문서의 가운데에 컨트롤이 추가됩니다.
참고
Excel에서 컨트롤을 선택하면 수식 입력줄에 =EMBED("WinForms.Control.Host","")가 표시됩니다. 이 텍스트는 필요하므로 삭제해서는 안 됩니다.
런타임에 문서 수준 프로젝트에서 컨트롤 추가
런타임에 프로그래밍 방식으로 문서에 Windows Forms 컨트롤을 추가할 수 있습니다. Word의 경우 ThisDocument 클래스의 Controls 속성에 대한 메서드를 사용합니다. Excel의 경우 Sheetn 클래스의 Controls 속성에 대한 메서드를 사용합니다. 각 메서드에는 서로 다른 방식으로 컨트롤의 위치를 지정할 수 있게 해 주는 여러 오버로드가 있습니다. 자세한 내용은 Windows Forms 컨트롤의 도우미 메서드를 참조하십시오.
런타임에 Windows Forms 컨트롤을 문서에 추가할 경우 문서를 닫으면 해당 컨트롤이 문서에 유지되지 않습니다. 다음에 문서를 열 때 컨트롤을 다시 만들 수 있습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하십시오.
런타임에 Windows Forms 컨트롤을 추가하려면
이름이 Add<control class>인 메서드를 사용합니다. 여기서 control class는 AddButton()과 같이 추가할 Windows Forms 컨트롤의 클래스 이름입니다.
다음 코드 예제에서는 Excel용 문서 수준 프로젝트에서 Sheet1의 C5 셀에 Button을 추가하는 방법을 보여 줍니다.
Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Startup Dim salesButton As Microsoft.Office.Tools.Excel.Controls.Button salesButton = Me.Controls.AddButton(Me.Range("C5"), "salesButton") salesButton.Text = "Calculate Total Sales" End Sub
private void Sheet1_Startup(object sender, System.EventArgs e) { Microsoft.Office.Tools.Excel.Controls.Button salesButton; salesButton = this.Controls.AddButton(this.get_Range("C5", missing), "salesButton"); salesButton.Text = "Calculate Total Sales"; }
런타임에 응용 프로그램 수준 추가 기능에서 컨트롤 추가
런타임에 프로그래밍 방식으로 열려 있는 문서에 Windows Forms 컨트롤을 추가할 수 있습니다. 먼저 열려 있는 문서 또는 워크시트를 기반으로 하는 호스트 항목을 생성합니다. 그런 다음 Word의 경우 새 호스트 항목의 Document.Controls 속성에 대한 메서드를 사용합니다. Excel의 경우 새 호스트 항목의 Worksheet.Controls 속성에 대한 메서드를 사용합니다. 각 메서드에는 서로 다른 방식으로 컨트롤의 위치를 지정할 수 있게 해 주는 여러 오버로드가 있습니다. 자세한 내용은 Windows Forms 컨트롤의 도우미 메서드를 참조하십시오.
런타임에 Windows Forms 컨트롤을 문서에 추가할 경우 문서를 닫으면 해당 컨트롤이 문서에 유지되지 않습니다. 다음에 문서를 열 때 컨트롤을 다시 만들 수 있습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하십시오.
응용 프로그램 수준 프로젝트에서 호스트 항목을 생성하는 방법에 대한 자세한 내용은 런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장을 참조하십시오.
런타임에 Windows Forms 컨트롤을 추가하려면
이름이 Add<control class>인 메서드를 사용합니다. 여기서 control class는 AddButton()과 같이 추가할 Windows Forms 컨트롤의 클래스 이름입니다.
참고
.NET Framework 4를 대상으로 하는 응용 프로그램 수준 추가 기능 프로젝트에서 Add<control class> 메서드에 액세스하려면 먼저 Microsoft.Office.Tools.Excel.v4.0.Utilities.dll 또는 Microsoft.Office.Tools.Word.v4.0.Utilities.dll 어셈블리에 대한 참조를 추가해야 합니다.
다음 코드 예제에서는 Word 추가 기능을 사용하여 활성 문서의 첫 번째 단락에 Button을 추가하는 방법을 보여 줍니다.
Dim salesButton As Microsoft.Office.Tools.Word.Controls.Button ' Use the following line of code in projects that target the .NET Framework 4. Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) ' In projects that target the .NET Framework 3.5, use the following line of code. ' Dim extendedDocument As Document = Me.Application.ActiveDocument.GetVstoObject() extendedDocument.Paragraphs(1).Range.InsertParagraphBefore() salesButton = extendedDocument.Controls.AddButton( _ extendedDocument.Paragraphs(1).Range, 75, 18, "salesButton") salesButton.Text = "Calculate Sales"
Microsoft.Office.Tools.Word.Controls.Button salesButton; // Use the following line of code in projects that target the .NET Framework 4. Document extendedDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); // In projects that target the .NET Framework 3.5, use the following line of code. // Document extendedDocument = this.Application.ActiveDocument.GetVstoObject(); extendedDocument.Paragraphs[1].Range.InsertParagraphBefore(); salesButton = extendedDocument.Controls.AddButton( extendedDocument.Paragraphs[1].Range, 75, 18, "salesButton"); salesButton.Text = "Calculate Sales";