Share via


연습: Outlook에서 디자인한 양식 영역 가져오기

이 연습에서는 Microsoft Office Outlook에서 새 양식 영역 마법사를 사용하여 양식 영역을 디자인한 다음 해당 양식 영역을 Outlook 추가 기능 프로젝트로 가져오는 방법을 보여 줍니다. Outlook에서 양식 영역을 디자인하면 네이티브 Outlook 컨트롤을 Outlook 데이터에 바인딩되는 양식 영역에 추가할 수 있습니다. 양식 영역을 가져온 후 각 컨트롤의 이벤트를 처리할 수 있습니다.

적용 대상: 이 항목의 정보는 Outlook 2007 및 Outlook 2010의 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

이 연습에서는 다음 작업을 수행합니다.

  • Outlook에서 양식 영역 디자이너를 사용하여 양식 영역 디자인

  • Outlook 추가 기능 프로젝트로 양식 영역 가져오기

  • 양식 영역에 있는 컨트롤의 이벤트 처리

참고

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

사전 요구 사항

이 연습을 완료하려면 다음 구성 요소가 필요합니다.

-

Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
  • Microsoft Office Outlook 2007 또는 Outlook 2010

참고

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.

비디오에 링크 관련 비디오 데모를 보려면 How Do I: Create Outlook Form Regions Using Visual Studio 2008?을 참조하십시오.

Outlook에서 양식 영역 디자이너를 사용하여 양식 영역 디자인

이 단계에서는 Outlook에서 양식 영역을 디자인합니다. 그런 다음 양식 영역을 Visual Studio로 가져올 수 있도록 찾기 쉬운 위치에 저장합니다.

이 예제의 양식 영역은 일반적인 작업 양식을 완전히 대체합니다. 이 양식 영역에서는 주요 작업(필수 구성 요소 작업)을 수행하기 전에 완료해야 하는 모든 작업의 진행 상태를 추적할 수 있습니다. 양식 영역에는 필수 구성 요소 작업 목록이 표시되고 목록의 각 작업에 대한 완료 상태가 표시됩니다. 사용자는 목록에서 작업을 추가하거나 제거할 수 있습니다. 각 작업의 완료 상태를 새로 고칠 수도 있습니다.

Outlook에서 양식 영역 디자이너를 사용하여 양식 영역을 디자인하려면

  1. Microsoft Office Outlook을 시작합니다.

  2. 다음 작업 중 하나를 수행하여 양식 디자이너를 엽니다.

    • Outlook 2010의 경우 개발 도구 탭에서 양식 디자인을 클릭합니다. 자세한 내용은 방법: 리본 메뉴에 개발 도구 탭 표시를 참조하십시오.

    • Outlook 2007의 경우 도구 메뉴에서 양식을 가리킨 다음 양식 디자인을 클릭합니다.

  3. 양식 디자인 상자에서 작업을 클릭한 다음 열기를 클릭합니다.

  4. 다음 작업 중 하나를 수행하여 양식 영역을 만듭니다.

    • Outlook 2010의 경우 개발 도구 탭의 디자인 그룹에서 새 양식 영역을 클릭합니다.

    • Outlook 2007의 경우 개발 도구 탭의 디자인 그룹에서 양식 영역을 클릭한 다음 새 양식 영역을 클릭합니다.

    새 양식 영역이 열립니다. 필드 선택이 표시되지 않으면 도구 그룹에서 필드 선택을 클릭합니다.

  5. 제목 필드 및 완료율 필드를 필드 선택에서 양식 영역으로 끌어 옵니다.

  6. 도구 그룹에서 컨트롤 도구 상자를 클릭하여 도구 상자를 엽니다.

  7. 도구 상자의 Label을 양식 영역으로 끌어 옵니다. 레이블을 제목완료율 필드 아래에 배치합니다.

  8. 레이블을 마우스 오른쪽 단추로 클릭한 다음 고급 속성을 클릭합니다.

  9. 속성 창에서 Caption 속성을 "This task depends on the following tasks"로 설정하고 Width 속성을 200으로 설정한 다음 적용을 클릭합니다.

  10. 도구 상자의 ListBox 컨트롤을 양식 영역으로 끌어 옵니다. 목록 상자를 "This task depends on the following tasks" 레이블 아래에 배치합니다.

  11. 방금 추가한 목록 상자를 선택합니다.

  12. 속성 창에서 Width를 300으로 설정하고 적용을 클릭합니다.

  13. 도구 상자의 Label을 양식 영역으로 끌어 옵니다. 레이블을 목록 상자 아래에 배치합니다.

  14. 방금 추가한 레이블을 선택합니다.

  15. 속성 창에서 Caption 속성을 "Select a task to add to the list of dependent tasks"로 설정하고 Width 속성을 200으로 설정한 다음 적용을 클릭합니다.

  16. 도구 상자의 ComboBox 컨트롤을 양식 영역으로 끌어 옵니다. 콤보 상자를 "Select a task to add to the list of dependent tasks" 레이블 아래에 배치합니다.

  17. 방금 추가한 콤보 상자를 선택합니다.

  18. 속성 창에서 Width 속성을 300으로 설정하고 적용을 클릭합니다.

  19. CommandButton 컨트롤을 도구 상자에서 양식 영역으로 끌어 놓습니다. 명령 단추를 콤보 상자 옆에 배치합니다.

  20. 방금 추가한 명령 단추를 선택합니다.

  21. 속성 창에서 Name을 "AddDependentTask"로 설정하고 Caption을 "Add Dependent Task"로 설정한 다음 Width를 100으로 설정하고 적용을 클릭합니다.

  22. 필드 선택에서 새로 만들기를 클릭합니다.

  23. 새 필드 대화 상자의 이름 필드에 "hiddenField"를 입력한 다음 확인을 클릭합니다.

  24. 필드 선택hiddenField 필드를 양식 영역으로 끌어 옵니다.

  25. 속성 창에서 Visible을 "0 - False"로 설정하고 적용을 클릭합니다.

  26. 다음 작업 중 하나를 수행하여 양식 영역을 저장합니다.

    • Outlook 2010의 경우 개발 도구 탭의 디자인 그룹에서 저장 단추를 클릭한 다음 다른 이름으로 양식 영역 저장을 클릭합니다.

    • Outlook 2007의 경우 개발 도구 탭의 디자인 그룹에서 양식 영역을 클릭한 다음 다른 이름으로 양식 영역 저장을 클릭합니다.

    양식 영역의 이름을 "TaskFormRegion"으로 지정하고 이 양식 영역을 컴퓨터의 로컬 디렉터리에 저장합니다.

    Outlook에서는 양식 영역을 Outlook 양식 저장 파일(.ofs)로 저장합니다. 양식 영역은 TaskFormRegion.ofs라는 이름으로 저장됩니다.

  27. Outlook을 종료합니다.

새 Outlook 추가 기능 프로젝트 만들기

이 단계에서는 Outlook 추가 기능 프로젝트를 만듭니다. 이 연습의 뒷부분에서는 양식 영역을 프로젝트로 가져옵니다.

새 Outlook 추가 기능 프로젝트를 만들려면

  1. Visual Studio에서 TaskAddIn이라는 Outlook 추가 기능 프로젝트를 만듭니다.

  2. 새 프로젝트 대화 상자에서 솔루션용 디렉터리 만들기를 선택합니다.

  3. 프로젝트를 기본 프로젝트 디렉터리에 저장합니다.

    자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.

양식 영역 가져오기

새 Outlook 양식 영역 마법사를 사용하여 Outlook에서 디자인한 양식 영역을 Outlook 추가 기능 프로젝트로 가져올 수 있습니다.

양식 영역을 Outlook 추가 기능 프로젝트로 가져오려면

  1. 솔루션 탐색기에서 TaskAddIn 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.

  2. 템플릿 창에서 Outlook 양식 영역을 선택하고 파일 이름을 "TaskFormRegion"으로 지정한 다음 추가를 클릭합니다.

    새 Outlook 양식 영역 마법사가 시작됩니다.

  3. 양식 영역을 만드는 방법 선택 페이지에서 Outlook 양식 저장 파일(.ofs) 가져오기를 클릭하고 찾아보기를 클릭합니다.

  4. 기존 Outlook 양식 영역 파일 위치 대화 상자에서 TaskFormRegion.ofs의 위치를 찾아 TaskFormRegion.ofs를 선택한 다음 열기를 클릭하고 다음을 클릭합니다.

  5. 만들 양식 영역 형식 선택 페이지에서 모두 바꾸기를 클릭하고 다음을 클릭합니다.

    모두 바꾸기 양식 영역이 전체 Outlook 양식을 대체합니다. 양식 영역 형식에 대한 자세한 내용은 Outlook 양식 영역 만들기를 참조하십시오.

  6. 설명 텍스트를 입력하고 디스플레이 기본 설정을 선택하십시오. 페이지에서 다음을 클릭합니다.

  7. 이 양식 영역을 표시할 메시지 클래스를 지정하십시오. 페이지의 이 양식 영역을 표시할 사용자 지정 메시지 클래스 필드에 "IPM.Task.TaskFormRegion"을 입력하고 마침을 클릭합니다.

    TaskFormRegion.cs 또는 TaskFormRegion.vb 파일이 프로젝트에 추가됩니다.

양식 영역에 있는 컨트롤의 이벤트 처리

이제 프로젝트에 양식 영역이 있으므로 Outlook의 양식 영역에 추가한 단추의 Microsoft.Office.Interop.Outlook.OlkCommandButton.Click 이벤트를 처리하는 코드를 추가할 수 있습니다.

또한 양식 영역이 표시될 때 양식 영역의 컨트롤을 업데이트하는 코드를 FormRegionShowing 이벤트에 추가합니다.

양식 영역에 있는 컨트롤의 이벤트를 처리하려면

  1. 솔루션 탐색기에서 TaskFormRegion.cs 또는 TaskFormRegion.vb를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

    TaskFormRegion.cs 또는 TaskFormRegion.vb가 코드 편집기에서 열립니다.

  2. 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);
    }
    
  3. TaskFormRegion 클래스에 다음 코드를 추가합니다. 이 코드는 다음 작업을 수행합니다.

    • FindTaskBySubjectName 도우미 메서드를 호출하고 원하는 작업의 제목을 전달하여 작업 폴더에서 Microsoft.Office.Interop.Outlook.TaskItem을 찾습니다. FindTaskBySubjectName 도우미 메서드는 다음 단계에서 추가합니다.

    • Microsoft.Office.Interop.Outlook.TaskItem.SubjectMicrosoft.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;
            }
        }
    
  4. 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;
    }
    
  5. TaskFormRegion 클래스에 다음 코드를 추가합니다. 이 코드는 다음 작업을 수행합니다.

    • 각 종속 작업의 현재 완료 상태로 양식 영역의 목록 상자를 새로 고칩니다.

    • 숨겨진 텍스트 필드를 구문 분석하여 각 종속 작업의 제목을 가져옵니다. 그런 다음 FindTaskBySubjectName 도우미 메서드를 호출하고 각 작업의 제목을 전달하여 작업 폴더에서 각 Microsoft.Office.Interop.Outlook.TaskItem을 찾습니다.

    • Microsoft.Office.Interop.Outlook.TaskItem.SubjectMicrosoft.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);
            }
        }
    }
    
  6. 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 양식 영역 테스트

양식 영역을 테스트하려면 양식 영역의 필수 구성 요소 작업 목록에 작업을 추가합니다. 필수 구성 요소 작업의 완료 상태를 업데이트하고 필수 구성 요소 작업 목록에서 작업의 업데이트된 완료 상태를 확인합니다.

양식 영역을 테스트하려면

  1. F5 키를 눌러 프로젝트를 실행합니다.

    Outlook이 시작됩니다.

  2. Outlook에서 다음 작업 중 하나를 수행하여 작업을 만듭니다.

    • Outlook 2010의 탭에서 새 항목을 클릭한 다음 작업을 클릭합니다.

    • Outlook 2007의 파일 메뉴에서 새로 만들기를 가리킨 다음 작업을 클릭합니다.

  3. 작업 양식의 제목 필드에 "Dependent Task"를 입력합니다.

  4. 리본 메뉴의 작업 탭에 있는 작업 그룹에서 저장 후 닫기를 클릭합니다.

  5. Outlook에서 다음 작업 중 하나를 수행하여 양식 영역의 인스턴스를 만듭니다.

  6. Outlook 2010의 경우 탭에서 새 항목, 기타 항목, 양식 선택을 차례로 클릭합니다.

  7. Outlook 2007의 경우 파일 메뉴에서 새로 만들기를 가리킨 다음 양식 선택을 클릭합니다.

  8. 양식 선택 대화 상자에서 TaskFormRegion을 클릭하고 열기를 클릭합니다.

    TaskFormRegion 양식 영역이 나타납니다. 이 양식은 전체 작업 양식을 완전히 대체합니다. Select a task to add to the list of dependent tasks 콤보 상자가 작업 폴더의 다른 작업으로 채워집니다.

  9. 작업 양식의 제목 필드에 Primary Task를 입력합니다.

  10. 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 이벤트가 성공적으로 처리되었음을 나타냅니다.

  11. Primary Task 항목을 저장하고 닫습니다.

  12. Outlook에서 Dependent Task 항목을 다시 엽니다.

  13. Dependent Task 양식에서 완료율 필드를 50%로 변경합니다.

  14. Dependent Task 리본 메뉴의 작업 탭에 있는 작업 그룹에서 저장 후 닫기를 클릭합니다.

  15. Outlook에서 Primary Task 항목을 다시 엽니다.

    This task depends on the following tasks 목록 상자에 50% 완료 -- Dependent Task가 나타납니다.

다음 단계

다음 항목에서는 Outlook 응용 프로그램의 UI를 사용자 지정하는 방법에 대해 더 자세히 설명합니다.

참고 항목

작업

연습: Outlook 양식 영역 디자인

방법: Outlook 추가 기능 프로젝트에 양식 영역 추가

방법: Outlook에서 양식 영역 표시하지 않기

방법: Outlook 항목 액세스 및 양식 영역 표시

개념

런타임에 양식 영역 액세스

Outlook 양식 영역 만들기 지침

Outlook 메시지 클래스에 양식 영역 연결

Outlook 양식 영역의 사용자 지정 작업

기타 리소스

Outlook 양식 영역 만들기