작업 창 개요
작업 창은 특정 Microsoft Office Word 문서나 Microsoft Office Excel 통합 문서에 연결된 사용자 지정 가능한 문서 동작 작업 창으로서, Excel의 XML 소스 작업 창 또는 Word의 스타일 및 서식 작업 창과 같은 다른 기본 제공 작업 창과 함께 Office 작업 창 내에 호스팅됩니다. Windows Forms 컨트롤 또는 WPF 컨트롤을 사용하여 작업 창 사용자 인터페이스를 디자인할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
작업 창은 Word 또는 Excel용 문서 수준 사용자 지정에만 만들 수 있고, 응용 프로그램 수준 추가 기능에는 만들 수 없습니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
참고
작업 창(Actions Pane)은 사용자 지정 작업 창(Task Pane)과 다릅니다. 사용자 지정 작업 창(Task Pane)은 특정 문서가 아닌 응용 프로그램에 연결됩니다. 일부 Microsoft Office 응용 프로그램의 응용 프로그램 수준 추가 기능에 사용자 지정 작업 창을 만들 수 있습니다. 자세한 내용은 사용자 지정 작업 창 개요를 참조하십시오.
관련 비디오 데모를 보려면 How Do I: Use WPF Controls Inside an Excel Actions Pane?을 참조하십시오.
작업 창 표시
작업 창은 ActionsPane 클래스로 표현됩니다. 문서 수준 프로젝트를 만들 때 프로젝트에서 ThisWorkbook(Excel의 경우) 또는 ThisDocument(Word의 경우) 클래스의 ActionsPane 필드를 사용하여 이 클래스의 인스턴스를 코드에 사용할 수 있습니다. 작업 창을 표시하려면 ActionsPane 필드의 Controls 속성에 Windows Forms 컨트롤을 추가합니다. 다음 코드 예제에서는 작업 창에 actions라는 컨트롤을 추가합니다.
Me.ActionsPane.Controls.Add(actions)
this.ActionsPane.Controls.Add(actions);
런타임에 명시적으로 작업 창에 컨트롤을 추가하면 즉시 작업 창이 표시됩니다. 작업 창이 표시되면 사용자의 작업에 대한 응답으로 컨트롤을 동적으로 추가하거나 제거할 수 있습니다. 일반적으로 ThisDocument 또는 ThisWorkbook의 Startup 이벤트 처리기에 작업 창을 표시하는 코드를 추가하여 사용자가 문서를 처음 열면 작업 창이 표시되도록 만듭니다. 또는 문서에서 사용자의 작업에 대한 응답으로만 작업 창을 표시하도록 만들 수도 있습니다. 예를 들어 문서에서 컨트롤의 Click 이벤트에 대한 코드를 추가할 수 있습니다.
작업 창에 여러 컨트롤 추가
작업 창에 여러 컨트롤을 추가하는 대부분의 경우에는 컨트롤을 사용자 정의 컨트롤에 그룹화한 다음 Controls 속성에 해당 사용자 정의 컨트롤을 추가해야 합니다. 이 과정에는 다음 단계가 포함됩니다.
프로젝트에 작업 창 컨트롤 또는 사용자 정의 컨트롤 항목을 추가하여 작업 창의 UI(사용자 인터페이스)를 만듭니다. 이 두 항목은 모두 사용자 지정 Windows Forms UserControl 클래스를 포함합니다. 작업 창 컨트롤 항목과 사용자 정의 컨트롤 항목은 동등하며 이름만 다를 뿐입니다.
디자이너를 사용하거나 코드를 작성하여 UserControl에 Windows Forms 컨트롤을 추가합니다.
참고
Windows Forms UserControl에 WPF System.Windows.Controls.UserControl을 추가하여 작업 창에 WPF 컨트롤을 추가할 수도 있습니다. 자세한 내용은 Office 솔루션에서 WPF 컨트롤 사용을 참조하십시오.
프로젝트에서 ThisWorkbook(Excel의 경우) 또는 ThisDocument(Word의 경우) 클래스의 ActionsPane 필드에 포함된 컨트롤에 사용자 지정 사용자 정의 컨트롤의 인스턴스를 추가합니다.
이 과정을 자세히 보여 주는 예제는 방법: Word 문서에 작업 창 추가 및 방법: Excel 통합 문서에 작업 창 추가를 참조하십시오.
작업 창 숨기기
ActionsPane 클래스에 Hide 메서드와 Visible 속성이 있기는 하지만 ActionsPane 클래스 자체의 멤버를 사용하여 사용자 인터페이스에서 작업 창을 제거할 수는 없습니다. Hide 메서드를 호출하거나 Visible 속성을 false로 설정하면 작업 창에 있는 컨트롤만 숨겨지며 작업 창 자체는 숨겨지지 않습니다.
솔루션에서 작업 창을 숨기려면 다음 방법을 사용합니다.
Word의 경우 문서 동작 작업 창을 나타내는 TaskPane 개체의 Visible 속성을 false로 설정합니다. 다음 코드 예제는 프로젝트의 ThisDocument 클래스에서 실행되도록 만들어졌습니다.
Me.Application.TaskPanes(Word.WdTaskPanes.wdTaskPaneDocumentActions).Visible = False
this.Application.TaskPanes[Word.WdTaskPanes.wdTaskPaneDocumentActions].Visible = false;
Excel의 경우 Application 개체의 DisplayDocumentActionTaskPane 속성을 false로 설정합니다. 다음 코드 예제는 프로젝트의 ThisWorkbook 클래스에서 실행되도록 만들어졌습니다.
Me.Application.DisplayDocumentActionTaskPane = False
this.Application.DisplayDocumentActionTaskPane = false;
Word 또는 Excel의 경우 작업 창을 나타내는 명령 모음의 CommandBar.Visible 속성을 false로 설정할 수도 있습니다. 다음 코드 예제는 프로젝트의 ThisDocument 또는 ThisWorkbook 클래스에서 실행되도록 만들어졌습니다.
Me.Application.CommandBars("Task Pane").Visible = False
this.Application.CommandBars["Task Pane"].Visible = false;
문서가 열려 있을 때 작업 창 지우기
작업 창이 표시되어 있는 상태에서 문서를 저장하면 작업 창에 컨트롤이 포함되어 있는지 여부에 관계없이 문서를 열 때마다 작업 창이 표시됩니다. 작업 창이 표시되는 시기를 제어하려면 ThisDocument 또는 ThisWorkbook의 Startup 이벤트 처리기에서 ActionsPane 필드의 Clear 메서드를 호출합니다.
작업 창이 닫히는 시기 확인
작업 창이 닫힐 때 발생하는 이벤트는 없습니다. ActionsPane 클래스에는 VisibleChanged 이벤트가 있지만 이 이벤트는 최종 사용자가 작업 창을 닫을 때 발생하는 것이 아니라 Hide 메서드를 호출하거나 Visible 속성을 false로 설정하여 작업 창의 컨트롤을 숨길 때 발생합니다.
최종 사용자가 작업 창을 닫은 경우 응용 프로그램의 UI(사용자 인터페이스)에서 다음 절차 중 하나를 수행하여 작업 창을 다시 표시할 수 있습니다.
Word 또는 Excel의 UI를 사용하여 작업 창을 표시하려면
리본 메뉴에서 보기 탭을 클릭합니다.
표시/숨기기 그룹에서 문서 동작 설정/해제 단추를 클릭합니다.
작업 창 이벤트 프로그래밍
여러 사용자 정의 컨트롤을 작업 창에 추가한 다음 사용자 정의 컨트롤을 표시하거나 숨겨 문서의 이벤트에 응답하는 코드를 작성할 수 있습니다. XML 스키마 요소를 문서에 매핑하면 삽입 지점이 XML 요소 중 하나의 안쪽에 놓일 때마다 작업 창에 특정 사용자 정의 컨트롤을 표시할 수 있습니다. 자세한 내용은 연습: 사용자 컨텍스트에 따라 작업 창 변경, 방법: Visual Studio 내부의 Word 문서에 스키마 매핑 및 방법: Visual Studio 내에서 워크시트에 스키마 매핑을 참조하십시오.
호스트 컨트롤, 응용 프로그램 또는 문서 이벤트를 포함하여 임의의 개체 이벤트에 응답하도록 코드를 작성할 수도 있습니다. 자세한 내용은 연습: NamedRange 컨트롤의 이벤트 프로그래밍을 참조하십시오.
작업 창의 컨트롤에 데이터 바인딩
작업 창의 컨트롤에는 Windows Forms의 컨트롤과 동일한 데이터 바인딩 기능이 있습니다. 데이터 집합, 형식화된 데이터 집합 및 XML 같은 데이터 소스에 컨트롤을 바인딩할 수 있습니다. 자세한 내용은 데이터 바인딩 및 Windows Forms을 참조하십시오.
작업 창의 컨트롤과 문서의 컨트롤을 동일한 데이터 집합에 바인딩할 수 있습니다. 예를 들어 작업 창의 컨트롤과 워크시트의 컨트롤 사이에 마스터/세부 항목 관계를 만들 수 있습니다. 자세한 내용은 연습: Excel 작업 창의 컨트롤에 데이터 바인딩을 참조하십시오.
작업 창 컨트롤의 데이터 유효성 검사
작업 창에서 컨트롤의 Validating 이벤트 처리기에 메시지 상자를 표시하면 포커스를 컨트롤에서 메시지 상자로 이동할 때 이벤트가 두 번 발생할 수 있습니다. 이러한 문제를 방지하려면 ErrorProvider 컨트롤을 사용하여 유효성 검사 오류 메시지를 표시합니다.
사용자 정의 컨트롤 스택 순서
여러 사용자 정의 컨트롤을 사용하는 경우 세로나 가로로 도킹된 작업 창에 사용자 정의 컨트롤을 올바르게 쌓기 위한 코드를 작성할 수 있습니다. StackOrder 속성의 StackStyle 열거형을 사용하여 작업 창에서 사용자 정의 컨트롤의 스택 순서를 설정할 수 있습니다. 자세한 내용은 방법: 작업 창에서 컨트롤 레이아웃 관리를 참조하십시오.
StackOrder 속성에는 다음과 같은 StackStyle 열거형 값을 사용할 수 있습니다.
스택 스타일 |
정의 |
---|---|
FromBottom |
작업 창의 아래쪽부터 쌓습니다. |
FromLeft |
작업 창의 왼쪽부터 쌓습니다. |
FromRight |
작업 창의 오른쪽부터 쌓습니다. |
FromTop |
작업 창의 위쪽부터 쌓습니다. |
None |
스택 순서를 정의하지 않습니다. 개발자가 순서를 제어합니다. |
다음 코드에서는 사용자 정의 컨트롤을 작업 창의 위쪽부터 쌓도록 StackOrder 속성을 설정합니다.
Me.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop
this.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;
컨트롤 고정
사용자가 런타임에 작업 창의 크기를 조정하면 컨트롤의 크기도 작업 창과 함께 조정될 수 있습니다. Windows Forms 컨트롤의 Anchor 속성을 사용하면 컨트롤을 작업 창에 고정할 수 있습니다. 동일한 방식으로 Windows Forms 컨트롤을 사용자 정의 컨트롤에 고정할 수도 있습니다. 자세한 내용은 방법: Windows Forms에서 컨트롤 고정을 참조하십시오.
작업 창 크기 조정
ActionsPane은 작업 창에 포함되어 있으므로 ActionsPane의 크기를 직접 변경할 수 없습니다. 그러나 작업 창을 나타내는 CommandBar의 Width 속성을 설정하여 작업 창의 너비를 프로그래밍 방식으로 변경할 수 있습니다. 가로로 도킹되었거나 부동인 작업 창의 경우 작업 창의 높이를 변경할 수 있습니다.
사용자가 자신의 요구에 가장 잘 맞는 작업 창 크기를 선택할 수 있어야 하므로 작업 창의 크기는 일반적으로 프로그래밍 방식으로 조정하지 않는 것이 좋습니다. 그러나 작업 창의 너비를 조정해야 하는 경우 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.
Me.CommandBars("Task Pane").Width = 200
this.CommandBars["Task Pane"].Width = 200;
작업 창 위치 변경
ActionsPane은 작업 창에 포함되어 있으므로 사용자가 직접 위치를 변경할 수 없습니다. 그러나 작업 창을 나타내는 CommandBar의 Position 속성을 설정하여 작업 창을 프로그래밍 방식으로 이동할 수 있습니다.
사용자가 화면에서 작업 창 위치를 원하는 대로 선택할 수 있어야 하므로 작업 창의 위치는 프로그래밍 방식으로 변경하지 않는 것이 좋습니다. 그러나 작업 창을 특정 위치로 이동해야 하는 경우에는 다음 코드를 사용하여 작업 창의 위치를 이동할 수 있습니다.
Me.CommandBars("Task Pane").Position = _
Microsoft.Office.Core.MsoBarPosition.msoBarLeft
this.CommandBars["Task Pane"].Position =
Microsoft.Office.Core.MsoBarPosition.msoBarLeft;
참고
최종 사용자는 언제든지 작업 창의 위치를 수동으로 변경할 수 있습니다. 프로그래밍 방식으로 작업 창을 항상 지정된 위치에 도킹할 수는 없습니다. 그러나 방향 변경 내용을 확인하여 작업 창의 컨트롤이 올바른 방향으로 스택되어 있는지 확인할 수 있습니다. 자세한 내용은 방법: 작업 창에서 컨트롤 레이아웃 관리를 참조하십시오.
ActionsPane 개체는 작업 창에 포함되므로 ActionsPane의 Top 및 Left 속성을 설정해도 해당 위치가 변경되지 않습니다.
작업 창이 도킹되어 있지 않는 경우에는 작업 창을 나타내는 CommandBar의 Top 및 Left 속성을 설정할 수 있습니다. 다음 코드는 도킹되지 않은 작업 창을 문서의 왼쪽 위 모퉁이로 이동합니다.
If Me.CommandBars("Task Pane").Position = _
Microsoft.Office.Core.MsoBarPosition.msoBarFloating Then
Me.CommandBars("Task Pane").Top = 0
Me.CommandBars("Task Pane").Left = 0
End If
if (this.CommandBars["Task Pane"].Position ==
Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
this.CommandBars["Task Pane"].Top = 0;
this.CommandBars["Task Pane"].Left = 0;
}