작업창은 일반적으로 Microsoft Office 응용 프로그램에서 창의 한쪽에 도킹되는 사용자 인터페이스 패널입니다. 사용자 지정 작업창을 사용하면 고유한 작업창을 만들고 사용자에게 솔루션의 기능에 액세스할 수 있는 친숙한 인터페이스를 제공할 수 있습니다. 예를 들어 인터페이스에는 코드를 실행하여 문서를 수정하거나 데이터 원본의 데이터를 표시하는 컨트롤이 포함될 수 있습니다.
적용 대상: 이 항목의 정보는 Outlook용 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 유형에서 사용할 수 있는 기능을 참조하세요.
비고
사용자 지정 작업창은 작업 창과 다릅니다. 작업 창은 Microsoft Office Word 및 Microsoft Office Excel에 대한 문서 수준 사용자 지정의 일부입니다. 자세한 내용은 작업 창 개요를 참조하세요.
사용자 지정 작업창의 이점
사용자 지정 작업창을 사용하면 기능을 친숙한 사용자 인터페이스에 통합할 수 있습니다. Visual Studio 도구를 사용하여 사용자 지정 작업창을 빠르게 만들 수 있습니다.
친숙한 사용자 인터페이스
Microsoft Office 시스템의 응용 프로그램 사용자는 Word의 스타일 및 서식 지정 작업창과 같은 작업창을 사용하는 데 이미 익숙합니다. 사용자 지정 작업창은 Microsoft Office 시스템의 다른 작업창처럼 동작합니다. 사용자는 사용자 지정 작업창을 애플리케이션 창의 다른 면에 도킹하거나 사용자 지정 작업창을 창의 모든 위치로 끌 수 있습니다. 여러 사용자 지정 작업창을 동시에 표시하는 VSTO 추가 기능을 만들 수 있으며 사용자는 각 작업창을 개별적으로 제어할 수 있습니다.
Windows Forms 지원
Visual Studio에서 Office 개발 도구를 사용하여 만든 사용자 지정 작업창의 사용자 인터페이스는 Windows Forms 컨트롤을 기반으로 합니다. 친숙한 Windows Forms 디자이너를 사용하여 사용자 지정 작업창에 대한 사용자 인터페이스를 디자인할 수 있습니다. Windows Forms의 데이터 바인딩 지원을 사용하여 작업창의 컨트롤에 데이터 원본을 바인딩할 수도 있습니다.
사용자 지정 작업창 만들기
다음 두 단계로 기본 사용자 지정 작업창을 만들 수 있습니다.
Windows Forms 컨트롤을 UserControl 개체에 추가하여 사용자 지정 작업창의 사용자 인터페이스를 만듭니다.
VSTO 추가 기능에서 개체에 사용자 컨트롤을 CustomTaskPaneCollection로 전달하여 사용자 지정 작업창을 인스턴스화합니다. 이 컬렉션은 작업창의 모양을 수정하고 사용자 이벤트에 응답하는 데 사용할 수 있는 새 CustomTaskPane 개체를 반환합니다.
자세한 내용은 방법: 애플리케이션에 사용자 지정 작업창 추가를 참조하세요.
사용자 인터페이스 만들기
Visual Studio에서 Office 개발 도구를 사용하여 만든 모든 사용자 지정 작업창에는 개체가 포함되어 있습니다 UserControl . 이 사용자 정의 컨트롤은 사용자 지정 작업창의 사용자 인터페이스를 제공합니다. 디자인 타임 또는 런타임에 사용자 컨트롤을 만들 수 있습니다. 디자인 타임에 사용자 컨트롤을 만드는 경우 Windows Forms 디자이너를 사용하여 작업창의 사용자 인터페이스를 생성할 수 있습니다.
사용자 지정 작업창 인스턴스화
사용자 지정 작업창의 사용자 인터페이스를 포함하는 사용자 정의 컨트롤을 만든 후에는 CustomTaskPane을 인스턴스화해야 합니다. 이렇게 하려면 Add 메서드 중 하나를 호출하여 사용자 컨트롤을 CustomTaskPaneCollection VSTO 추가 기능으로 전달합니다. 이 컬렉션은 ThisAddIn 클래스의 CustomTaskPanes 필드로 노출됩니다. 다음 코드 예제는 클래스에서 ThisAddIn 실행하기 위한 것입니다.
myUserControl1 = new MyUserControl();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
메서드는 Add 새 CustomTaskPane 개체를 반환합니다. 이 개체를 사용하여 작업창의 모양을 수정하고 사용자 이벤트에 응답할 수 있습니다.
여러 창에서 작업창 제어
사용자 지정 작업창은 사용자에게 문서 또는 항목의 보기를 표시하는 문서 프레임 창과 연결됩니다. 작업창은 연결된 창이 표시되는 경우에만 표시됩니다.
사용자 지정 작업창을 표시하는 창을 확인하려면 작업창을 만들 때 적절한 Add 메서드 오버로드를 사용합니다.
작업창을 활성 창과 연결하려면 이 메서드를 Add 사용합니다.
작업창을 지정된 창에서 호스트하는 문서와 연결하려면 이 메서드를 Add 사용합니다.
일부 Office 응용 프로그램에는 둘 이상의 창이 열려 있을 때 작업창을 만들거나 표시해야 하는 경우에 대한 명시적 지침이 필요합니다. 이렇게 하면 코드에서 사용자 지정 작업창을 인스턴스화할 위치를 고려하여 애플리케이션의 적절한 문서 또는 항목과 함께 작업창이 표시되는지 확인해야 합니다. 자세한 내용은 애플리케이션 창에서 사용자 지정 작업창 관리를 참조하세요.
작업창에서 애플리케이션 액세스
사용자 컨트롤에서 애플리케이션을 자동화하려는 경우 코드에서 사용하여 Globals.ThisAddIn.Application 개체 모델에 직접 액세스할 수 있습니다. 정적 Globals 클래스는 개체에 ThisAddIn 대한 액세스를 제공합니다.
Application 이 개체의 필드는 애플리케이션의 개체 모델에 대한 진입점입니다.
개체 ThisAddIn의 Application 필드에 대한 자세한 내용은 VSTO 추가 기능 프로그래밍을 참조하세요. 애플리케이션을 사용자 지정 작업창에서 자동화하는 방법을 설명하는 연습은 연습: 사용자 지정 작업창에서 애플리케이션 자동화하기를 참조하세요. 클래스에 Globals 대한 자세한 내용은 Office 프로젝트의 개체에 대한 전역 액세스를 참조하세요.
작업창의 사용자 인터페이스 관리
작업창을 만든 후 개체의 속성과 이벤트를 사용하여 작업창의 CustomTaskPane 사용자 인터페이스를 제어하고 사용자가 작업창을 변경할 때 응답할 수 있습니다.
사용자 지정 작업창 표시
기본적으로 작업창은 표시되지 않습니다. 작업창을 표시하려면 속성을 Visible로 설정 해야 합니다.
사용자는 작업창 모서리에서 닫기 단추(X)를 클릭하여 언제든지 작업창을 닫을 수 있습니다. 그러나 사용자가 사용자 지정 작업창을 다시 여는 기본 방법은 없습니다. 사용자가 사용자 지정 작업창을 닫으면 사용자 지정 작업창을 표시할 방법을 제공하지 않으면 해당 사용자가 사용자 지정 작업창을 다시 볼 수 없습니다.
VSTO 추가 기능에서 사용자 지정 작업창을 만드는 경우 사용자가 클릭하여 사용자 지정 작업창을 표시하거나 숨길 수 있는 단추와 같은 UI 요소도 만들어야 합니다. 리본 메뉴 사용자 지정을 지원하는 Microsoft Office 응용 프로그램에서 사용자 지정 작업창을 만드는 경우 사용자 지정 작업창을 표시하거나 숨기는 단추가 있는 컨트롤 그룹을 리본 메뉴에 추가할 수 있습니다. 이 작업을 수행하는 방법을 보여 주는 연습은 연습: 리본 단추를 사용하여 사용자 지정 작업창 동기화를 참조하세요.
리본 메뉴 사용자 지정을 지원하지 않는 Microsoft Office 응용 프로그램에서 사용자 지정 작업창을 만드는 경우, 사용자 지정 작업창을 표시하거나 숨기는 CommandBarButton을 추가할 수 있습니다.
작업창의 모양 수정
개체의 속성을 사용하여 사용자 지정 작업창의 크기와 위치를 제어할 CustomTaskPane 수 있습니다. 사용자 지정 작업창에 포함된 개체의 속성을 사용하여 사용자 지정 작업창의 UserControl 모양을 변경할 수 있습니다. 예를 들어 사용자 정의 컨트롤의 속성을 사용하여 사용자 지정 작업창의 BackgroundImage 배경 이미지를 지정할 수 있습니다.
다음 표에는 속성을 사용하여 CustomTaskPane 사용자 지정 작업창에 적용할 수 있는 변경 내용이 나와 있습니다.
| 과업 | 재산 |
|---|---|
| 작업창의 크기를 변경하려면 | Height Width |
| 작업창의 위치를 변경하려면 | DockPosition |
| 작업창을 숨기거나 표시하려면 | Visible |
| 사용자가 작업창의 위치를 변경하지 못하도록 하려면 | DockPositionRestrict |
프로그램 사용자 지정 작업창 이벤트
사용자가 사용자 지정 작업창을 수정할 때 VSTO 추가 기능이 응답하도록 할 수 있습니다. 예를 들어 사용자가 창 방향을 세로에서 가로로 변경하는 경우 컨트롤의 위치를 변경할 수 있습니다.
다음 표에서는 사용자가 사용자 지정 작업창에 적용한 변경 내용에 응답하기 위해 처리할 수 있는 이벤트를 나열합니다.
| 과업 | Event |
|---|---|
| 사용자가 작업창의 위치를 변경할 때 응답합니다. | DockPositionChanged |
| 사용자가 작업창을 숨기거나 표시할 때 응답합니다. | VisibleChanged |
작업창에서 사용하는 리소스 정리
사용자 지정 작업창 CustomTaskPane 을 만든 후에는 VSTO 추가 기능이 실행되는 한 개체가 메모리에 유지됩니다. 사용자가 작업창 모서리에서 닫기 단추(X)를 클릭한 후에도 개체가 메모리에 남아 있습니다.
VSTO 추가 기능이 계속 실행되는 동안 작업창에서 사용하는 리소스를 정리하려면 Remove 또는 RemoveAt 메서드를 사용합니다. 이러한 메서드는 컬렉션에서 지정된 CustomTaskPane 개체를 CustomTaskPanes 제거하고 개체의 메서드를 Dispose 호출합니다.
Visual Studio Tools for Office 런타임은 VSTO 추가 기능이 언로드될 때 사용자 지정 작업창에서 사용하는 리소스를 자동으로 정리합니다. 프로젝트의 ThisAddIn_Shutdown 이벤트 처리기에서 Remove 또는 RemoveAt 메서드를 호출하지 마세요. 이러한 메서드는 Visual Studio Tools for Office 런타임이 호출되기 전에 ObjectDisposedException 개체에서 CustomTaskPane 사용하는 리소스를 정리하기 때문에 throwThisAddIn_Shutdown됩니다. 자세한 ThisAddIn_Shutdown내용은 Office 프로젝트의 이벤트를 참조하세요.
여러 애플리케이션 창에서 사용자 지정 작업창 관리
여러 창을 사용하여 문서 및 기타 항목을 표시하는 애플리케이션에서 사용자 지정 작업창을 만들 때 사용자가 예상할 때 작업창이 표시되는지 확인하기 위해 추가 단계를 수행해야 합니다.
모든 애플리케이션의 사용자 지정 작업창은 문서 프레임 창과 연결되어 사용자에게 문서 또는 항목의 보기를 표시합니다. 작업창은 연결된 창이 표시되는 경우에만 표시됩니다. 그러나 모든 애플리케이션에서 문서 프레임 창을 같은 방식으로 사용하는 것은 아닙니다.
다음 애플리케이션 그룹에는 다양한 개발 요구 사항이 있습니다.
아웃룩
Outlook용 사용자 지정 작업창을 만들면 사용자 지정 작업창이 특정 탐색기 또는 검사기 창과 연결됩니다. 탐색기는 폴더의 내용을 표시하는 창이며, 검사기는 전자 메일 메시지 또는 작업과 같은 항목을 표시하는 창입니다.
여러 탐색기 또는 검사기 창이 있는 사용자 지정 작업창을 표시하려면 탐색기 또는 검사기 창이 열릴 때 사용자 지정 작업창의 새 인스턴스를 만들어야 합니다. 이렇게 하려면 탐색기 또는 검사기 창을 만들 때 발생하는 이벤트를 처리한 다음 이벤트 처리기에서 작업창을 만듭니다. 탐색기 및 검사기 이벤트를 처리하여 표시되는 창에 따라 작업창을 숨기거나 표시할 수도 있습니다.
작업창을 특정 탐색기 또는 검사기와 연결하려면 메서드를 사용하여 Add 작업창을 만들고 Explorer 매개 변수에 Inspector 개체를 전달합니다. 사용자 지정 작업창을 만드는 방법에 대한 자세한 내용은 사용자 지정 작업창 개요를 참조하세요.
-
검사기 창의 상태를 모니터링하려면 다음 검사기 관련 이벤트를 처리할 수 있습니다.
Outlook에서 사용자 지정 작업창의 여러 인스턴스 방지
Outlook 창에 사용자 지정 작업창의 여러 인스턴스가 표시되지 않도록 하려면 각 창이 닫혀 있을 때 클래스 컬렉션에서 CustomTaskPanes 사용자 지정 작업창을 ThisAddIn 명시적으로 제거합니다. 창이 Remove 닫혀 있을 때 발생하는 이벤트(예: Close 또는 Close.)에서 메서드를 호출합니다.
사용자 지정 작업창을 명시적으로 제거하지 않으면 Outlook 창에 사용자 지정 작업창의 여러 인스턴스가 표시될 수 있습니다. Outlook은 때때로 창을 재활용하고, 재활용된 창은 연결된 사용자 지정 작업창에 대한 참조를 유지합니다.
Word, InfoPath 및 PowerPoint
Word, InfoPath 및 PowerPoint는 각 문서를 다른 문서 프레임 창에 표시합니다. 이러한 애플리케이션에 대한 사용자 지정 작업창을 만들 때 사용자 지정 작업창은 특정 문서와만 연결됩니다. 사용자가 다른 문서를 열면 이전 문서가 다시 표시될 때까지 사용자 지정 작업창이 숨겨집니다.
여러 문서가 있는 사용자 지정 작업창을 표시하려면 사용자가 새 문서를 만들거나 기존 문서를 열 때 사용자 지정 작업창의 새 인스턴스를 만듭니다. 이렇게 하려면 문서를 만들거나 열 때 발생하는 이벤트를 처리한 다음 이벤트 처리기에서 작업창을 만듭니다. 표시되는 문서에 따라 작업창을 숨기거나 표시하는 문서 이벤트를 처리할 수도 있습니다.
작업창을 특정 문서 창과 연결하려면 이 메서드를 사용하여 Add 작업창을 만들고(Word의 경우), (InfoPath의 경우) Window 또는 WindowObject(PowerPoint용)를 창 매개 변수에 전달 합니다.
Word 이벤트
Word에서 문서 창의 상태를 모니터링하려면 다음 이벤트를 처리할 수 있습니다.
InfoPath 이벤트
InfoPath에서 문서 창의 상태를 모니터링하려면 다음 이벤트를 처리할 수 있습니다.
PowerPoint 이벤트
PowerPoint에서 문서 창의 상태를 모니터링하려면 다음 이벤트를 처리할 수 있습니다.
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterNewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterPresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.NewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.PresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowActivate
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowDeactivate