연습: Outlook에서 디자인한 양식 영역 가져오기
이 연습에서는 Microsoft Office Outlook에서 새 양식 영역 마법사를 사용하여 양식 영역을 디자인한 다음 해당 양식 영역을 Outlook 추가 기능 프로젝트로 가져오는 방법을 보여 줍니다.Outlook에서 양식 영역을 디자인하면 네이티브 Outlook 컨트롤을 Outlook 데이터에 바인딩되는 양식 영역에 추가할 수 있습니다.양식 영역을 가져온 후 각 컨트롤의 이벤트를 처리할 수 있습니다.
적용 대상: 이 항목의 정보는 Outlook 2013 및 Outlook 2010의 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 다음 작업을 수행합니다.
Outlook에서 양식 영역 디자이너를 사용하여 양식 영역 디자인
Outlook 추가 기능 프로젝트로 양식 영역 가져오기
양식 영역에 있는 컨트롤의 이벤트 처리
[!참고]
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2012 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.110\).md)을 참조하십시오.
- Outlook 2013 또는 Outlook 2010
[!참고]
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다.설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다.자세한 내용은 Visual Studio 설정을 참조하십시오.
관련 비디오 데모를 보려면 How Do I: Create Outlook Form Regions Using Visual Studio 2008?을 참조하십시오.
Outlook에서 양식 영역 디자이너를 사용하여 양식 영역 디자인
이 단계에서는 Outlook에서 양식 영역을 디자인합니다.그런 다음 양식 영역을 Visual Studio로 가져올 수 있도록 찾기 쉬운 위치에 저장합니다.
이 예제의 양식 영역은 일반적인 작업 양식을 완전히 대체합니다.이 양식 영역에서는 주요 작업(필수 구성 요소 작업)을 수행하기 전에 완료해야 하는 모든 작업의 진행 상태를 추적할 수 있습니다.양식 영역에는 필수 구성 요소 작업 목록이 표시되고 목록의 각 작업에 대한 완료 상태가 표시됩니다.사용자는 목록에서 작업을 추가하거나 제거할 수 있습니다.각 작업의 완료 상태를 새로 고칠 수도 있습니다.
Outlook에서 양식 영역 디자이너를 사용하여 양식 영역을 디자인하려면
Microsoft Office Outlook을 시작합니다.
Outlook에서에서 개발자 탭에서 클릭 양식 디자인.자세한 내용은 방법: 리본 메뉴에 개발 도구 탭 표시을 참조하십시오.
양식 디자인 상자에서 작업을 클릭한 다음 열기를 클릭합니다.
Outlook에서에 개발자 탭에 있는 디자인 그룹화 하려면 클릭 새 양식 영역.
새 양식 영역이 열립니다.필드 선택이 표시되지 않으면 도구 그룹에서 필드 선택을 클릭합니다.
제목 필드 및 완료율 필드를 필드 선택에서 양식 영역으로 끌어 옵니다.
도구 그룹에서 컨트롤 도구 상자를 클릭하여 도구 상자를 엽니다.
도구 상자의 Label을 양식 영역으로 끌어 옵니다.레이블을 제목 및 완료율 필드 아래에 배치합니다.
레이블을 마우스 오른쪽 단추로 클릭한 다음 고급 속성을 클릭합니다.
속성 창에서 Caption 속성을 "This task depends on the following tasks"로 설정하고 Width 속성을 200으로 설정한 다음 적용을 클릭합니다.
도구 상자의 ListBox 컨트롤을 양식 영역으로 끌어 옵니다.목록 상자를 "This task depends on the following tasks" 레이블 아래에 배치합니다.
방금 추가한 목록 상자를 선택합니다.
속성 창에서 Width를 300으로 설정하고 적용을 클릭합니다.
도구 상자의 Label을 양식 영역으로 끌어 옵니다.레이블을 목록 상자 아래에 배치합니다.
방금 추가한 레이블을 선택합니다.
속성 창에서 Caption 속성을 "Select a task to add to the list of dependent tasks"로 설정하고 Width 속성을 200으로 설정한 다음 적용을 클릭합니다.
도구 상자의 ComboBox 컨트롤을 양식 영역으로 끌어 옵니다.콤보 상자를 "Select a task to add to the list of dependent tasks" 레이블 아래에 배치합니다.
방금 추가한 콤보 상자를 선택합니다.
속성 창에서 Width 속성을 300으로 설정하고 적용을 클릭합니다.
CommandButton 컨트롤을 도구 상자에서 양식 영역으로 끌어 놓습니다.명령 단추를 콤보 상자 옆에 배치합니다.
방금 추가한 명령 단추를 선택합니다.
속성 창에서 Name을 "AddDependentTask"로 설정하고 Caption을 "Add Dependent Task"로 설정한 다음 Width를 100으로 설정하고 적용을 클릭합니다.
필드 선택에서 새로 만들기를 클릭합니다.
새 필드 대화 상자의 이름 필드에 "hiddenField"를 입력한 다음 확인을 클릭합니다.
필드 선택의 hiddenField 필드를 양식 영역으로 끌어 옵니다.
속성 창에서 Visible을 "0 - False"로 설정하고 적용을 클릭합니다.
Outlook에서에서 개발자 탭에서 디자인 그룹화 하려면 클릭의 저장 단추를 클릭 한 다음을 클릭 양식 영역 저장.
양식 영역의 이름을 "TaskFormRegion"으로 지정하고 이 양식 영역을 컴퓨터의 로컬 디렉터리에 저장합니다.
Outlook에서는 양식 영역을 Outlook 양식 저장 파일(.ofs)로 저장합니다.양식 영역은 TaskFormRegion.ofs라는 이름으로 저장됩니다.
Outlook을 종료합니다.
새 Outlook 추가 기능 프로젝트 만들기
이 단계에서는 Outlook 추가 기능 프로젝트를 만듭니다.이 연습의 뒷부분에서는 양식 영역을 프로젝트로 가져옵니다.
새 Outlook 추가 기능 프로젝트를 만들려면
Visual Studio에서 TaskAddIn이라는 Outlook 추가 기능 프로젝트를 만듭니다.
새 프로젝트 대화 상자에서 솔루션용 디렉터리 만들기를 선택합니다.
프로젝트를 기본 프로젝트 디렉터리에 저장합니다.
자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기을 참조하십시오.
양식 영역 가져오기
새 Outlook 양식 영역 마법사를 사용하여 Outlook에서 디자인한 양식 영역을 Outlook 추가 기능 프로젝트로 가져올 수 있습니다.
양식 영역을 Outlook 추가 기능 프로젝트로 가져오려면
솔루션 탐색기에서 TaskAddIn 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.
템플릿 창에서 Outlook 양식 영역을 선택하고 파일 이름을 "TaskFormRegion"으로 지정한 다음 추가를 클릭합니다.
새 Outlook 양식 영역 마법사가 시작됩니다.
양식 영역을 만드는 방법 선택 페이지에서 Outlook 양식 저장 파일(.ofs) 가져오기를 클릭하고 찾아보기를 클릭합니다.
기존 Outlook 양식 영역 파일 위치 대화 상자에서 TaskFormRegion.ofs의 위치를 찾아 TaskFormRegion.ofs를 선택한 다음 열기를 클릭하고 다음을 클릭합니다.
만들 양식 영역 형식 선택 페이지에서 모두 바꾸기를 클릭하고 다음을 클릭합니다.
모두 바꾸기 양식 영역이 전체 Outlook 양식을 대체합니다.양식 영역 형식에 대한 자세한 내용은 Outlook 양식 영역 만들기를 참조하십시오.
설명 텍스트를 입력하고 디스플레이 기본 설정을 선택하십시오. 페이지에서 다음을 클릭합니다.
이 양식 영역을 표시할 메시지 클래스를 지정하십시오. 페이지의 이 양식 영역을 표시할 사용자 지정 메시지 클래스 필드에 "IPM.Task.TaskFormRegion"을 입력하고 마침을 클릭합니다.
TaskFormRegion.cs 또는 TaskFormRegion.vb 파일이 프로젝트에 추가됩니다.
양식 영역에 있는 컨트롤의 이벤트 처리
이제 프로젝트에 양식 영역이 있으므로 Outlook의 양식 영역에 추가한 단추의 Microsoft.Office.Interop.Outlook.OlkCommandButton.Click 이벤트를 처리하는 코드를 추가할 수 있습니다.
또한 양식 영역이 표시될 때 양식 영역의 컨트롤을 업데이트하는 코드를 FormRegionShowing 이벤트에 추가합니다.
양식 영역에 있는 컨트롤의 이벤트를 처리하려면
솔루션 탐색기에서 TaskFormRegion.cs 또는 TaskFormRegion.vb를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
TaskFormRegion.cs 또는 TaskFormRegion.vb가 코드 편집기에서 열립니다.
TaskFormRegion 클래스에 다음 코드를 추가합니다.이 코드는 양식 영역의 콤보 상자를 Outlook 작업 폴더에 있는 각 작업의 제목 줄로 채웁니다.
Private Sub populateComboBox() Dim Application As New Outlook.Application() Dim outlookNameSpace As Outlook.NameSpace = _ Application.GetNamespace("MAPI") Dim taskFolder As Outlook.MAPIFolder = _ outlookNameSpace.GetDefaultFolder _ (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks) Dim taskItems As Outlook.Items = taskFolder.Items Dim task As Outlook.TaskItem For Each task In taskItems If Not (task.Subject Is Nothing) Then comboBox1.AddItem(task.Subject, System.Type.Missing) End If Next task comboBox1.Text = comboBox1.GetItem(0) End Sub
private void populateComboBox() { Outlook.Application Application = new Outlook.Application(); Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI"); Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder( Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks); Outlook.Items taskItems = taskFolder.Items; foreach (Outlook.TaskItem task in taskItems) { if (task.Subject != null) { comboBox1.AddItem(task.Subject, System.Type.Missing); } } comboBox1.Text = comboBox1.GetItem(0); }
TaskFormRegion 클래스에 다음 코드를 추가합니다.이 코드는 다음 작업을 수행합니다.
FindTaskBySubjectName 도우미 메서드를 호출하고 원하는 작업의 제목을 전달하여 작업 폴더에서 Microsoft.Office.Interop.Outlook.TaskItem을 찾습니다.FindTaskBySubjectName 도우미 메서드는 다음 단계에서 추가합니다.
Microsoft.Office.Interop.Outlook.TaskItem.Subject 및 Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete 값을 종속 작업 목록 상자에 추가합니다.
양식 영역의 숨겨진 필드에 작업의 제목을 추가합니다.숨겨진 필드에는 이러한 값이 Outlook 항목의 일부로 저장됩니다.
Private Sub AddDependentTask_Click1() Handles addDependentTask.Click Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _ (comboBox1.Text) If Not (tempTaskItem Is Nothing) Then Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _ "% Complete -- " & tempTaskItem.Subject, System.Type.Missing) Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject End If End Sub
void AddDependentTask_Click() { Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text); if (tempTaskItem != null) { this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing); this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + tempTaskItem.Subject; } }
TaskFormRegion 클래스에 다음 코드를 추가합니다.이 코드는 이전 단계에서 설명한 FindTaskBySubjectName 도우미 메서드를 제공합니다.
Private Function FindTaskBySubjectName(ByVal subjectName As String) _ As Outlook.TaskItem Dim Application As New Outlook.Application() Dim outlookNameSpace As Outlook.NameSpace = _ Application.GetNamespace("MAPI") Dim tasksFolder As Outlook.MAPIFolder = _ outlookNameSpace.GetDefaultFolder _ (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks) Dim taskItems As Outlook.Items = tasksFolder.Items Dim taskItem As Outlook.TaskItem For Each taskItem In taskItems If taskItem.Subject = subjectName Then Return taskItem End If Next taskItem Return Nothing End Function
private Outlook.TaskItem FindTaskBySubjectName(string subjectName) { Outlook.Application Application = new Outlook.Application(); Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI"); Outlook.MAPIFolder tasksFolder = outlookNameSpace.GetDefaultFolder( Microsoft.Office.Interop.Outlook. OlDefaultFolders.olFolderTasks); Outlook.Items taskItems = tasksFolder.Items; foreach (Outlook.TaskItem taskItem in taskItems) { if (taskItem.Subject == subjectName) { return taskItem; } } return null; }
TaskFormRegion 클래스에 다음 코드를 추가합니다.이 코드는 다음 작업을 수행합니다.
각 종속 작업의 현재 완료 상태로 양식 영역의 목록 상자를 새로 고칩니다.
숨겨진 텍스트 필드를 구문 분석하여 각 종속 작업의 제목을 가져옵니다.그런 다음 FindTaskBySubjectName 도우미 메서드를 호출하고 각 작업의 제목을 전달하여 작업 폴더에서 각 Microsoft.Office.Interop.Outlook.TaskItem을 찾습니다.
Microsoft.Office.Interop.Outlook.TaskItem.Subject 및 Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete 값을 종속 작업 목록 상자에 추가합니다.
Private Sub RefreshTaskListBox() listBox1.Clear() Dim tempTaskItem As Outlook.TaskItem Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c}) Dim tempString As String For Each tempString In tempArray tempTaskItem = FindTaskBySubjectName(tempString) If Not (tempTaskItem Is Nothing) Then Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _ "% Complete -- " & tempTaskItem.Subject, System.Type.Missing) End If Next tempString End Sub
void RefreshTaskListBox() { listBox1.Clear(); Outlook.TaskItem tempTaskItem; String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' }); foreach (string tempString in tempArray) { tempTaskItem = FindTaskBySubjectName(tempString); if (tempTaskItem != null) { this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing); } } }
TaskFormRegion_FormRegionShowing 이벤트 처리기를 다음 코드로 바꿉니다.이 코드는 다음 작업을 수행합니다.
양식 영역이 표시될 때 양식 영역의 콤보 상자를 작업 제목으로 채웁니다.
양식 영역이 표시될 때 RefreshTaskListBox 도우미 메서드를 호출합니다.그러면 이전에 항목을 열 때 목록 상자에 추가한 종속 작업이 표시됩니다.
Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing populateComboBox() RefreshTaskListBox() End Sub
private void TaskFormRegion_FormRegionShowing (object sender, EventArgs e) { populateComboBox(); RefreshTaskListBox(); this.addDependentTask.Click += new Microsoft.Office.Interop.Outlook. OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click); }
Outlook 양식 영역 테스트
양식 영역을 테스트하려면 양식 영역의 필수 구성 요소 작업 목록에 작업을 추가합니다.필수 구성 요소 작업의 완료 상태를 업데이트하고 필수 구성 요소 작업 목록에서 작업의 업데이트된 완료 상태를 확인합니다.
양식 영역을 테스트하려면
F5 키를 눌러 프로젝트를 실행합니다.
Outlook이 시작됩니다.
Outlook에서에 홈 탭에서 클릭 새 항목를 클릭 하 고 다음을 클릭 작업.
작업 양식의 제목 필드에 "Dependent Task"를 입력합니다.
리본 메뉴의 작업 탭에 있는 작업 그룹에서 저장 후 닫기를 클릭합니다.
Outlook에서에서 홈 탭에서 클릭 새 항목, 클릭 개 항목, 클릭 하 고 다음을 클릭 양식 선택.
양식 선택 대화 상자에서 TaskFormRegion을 클릭하고 열기를 클릭합니다.
TaskFormRegion 양식 영역이 나타납니다.이 양식은 전체 작업 양식을 완전히 대체합니다.Select a task to add to the list of dependent tasks 콤보 상자가 작업 폴더의 다른 작업으로 채워집니다.
작업 양식의 제목 필드에 Primary Task를 입력합니다.
Select a task to add to the list of dependent tasks 콤보 상자에서 Dependent Task를 선택하고 Add Dependent Task를 클릭합니다.
This task depends on the following tasks 목록 상자에 0% 완료 -- Dependent Task가 나타납니다.이는 단추의 Microsoft.Office.Interop.Outlook.OlkCommandButton.Click 이벤트가 성공적으로 처리되었음을 나타냅니다.
Primary Task 항목을 저장하고 닫습니다.
Outlook에서 Dependent Task 항목을 다시 엽니다.
Dependent Task 양식에서 완료율 필드를 50%로 변경합니다.
Dependent Task 리본 메뉴의 작업 탭에 있는 작업 그룹에서 저장 후 닫기를 클릭합니다.
Outlook에서 Primary Task 항목을 다시 엽니다.
This task depends on the following tasks 목록 상자에 50% 완료 -- Dependent Task가 나타납니다.
다음 단계
다음 항목에서는 Outlook 응용 프로그램의 UI를 사용자 지정하는 방법에 대해 더 자세히 설명합니다.
관리되는 컨트롤을 비주얼 디자이너로 끌어 양식 영역의 모양을 디자인하는 방법에 대한 자세한 내용은 연습: Outlook 양식 영역 디자인를 참조하십시오.
Outlook 항목의 리본 메뉴를 사용자 지정하는 방법에 대한 자세한 내용은 Outlook에 대해 리본 메뉴 사용자 지정을 참조하십시오.
Outlook에 사용자 지정 작업 창을 추가하는 방법에 대한 자세한 내용은 사용자 지정 작업 창를 참조하십시오.
참고 항목
작업
방법: Outlook 추가 기능 프로젝트에 양식 영역 추가