Поделиться через


Пошаговое руководство. Импорт области формы, созданной в Outlook

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Outlook 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

В данном пошаговом руководстве демонстрируется создание области формы в Microsoft Office Outlook, а также ее импорт в проект настройки Outlook Visual Studio Tools for Office с помощью мастера Новая область формы. Создание области формы в Outlook позволяет добавить собственные элементы управления Outlook в область формы, связанную с данными Outlook. После импорта области формы можно обрабатывать события каждого элемента управления.

В данном пошаговом руководстве демонстрируются следующие задачи:

  • создание области формы с помощью конструктора области формы Outlook;

  • импорт области формы в проект надстройки Outlook;

  • обработка событий элементов управления в области формы.

Bb608611.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Для выполнения инструкций данного пошагового руководства необходимы следующие компоненты.

  • Visual Studio Tools for Office (необязательный компонент Visual Studio 2008 Professional и Visual Studio Team System).

  • Microsoft Office Outlook 2007.

Bb608611.alert_note(ru-ru,VS.90).gifПримечание.

На компьютере могут отображаться имена или расположения некоторых элементов пользовательского интерфейса Visual Studio, отличающиеся от указанных в дальнейших инструкциях. Эти элементы определяются используемой версией Visual Studio и ее параметрами. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание области формы с помощью конструктора области формы Outlook

На данном этапе осуществляется создание области формы в Outlook. Затем необходимо сохранить область формы в доступное расположение, чтобы иметь возможность импортировать ее в Visual Studio.

Эта область формы полностью заменяет обычную форму задач. Она дает возможность отслеживать ход выполнения всех задач, которые должны быть завершены перед выполнением главной задачи (обязательные задачи). Область формы отображает список обязательных задач, а также состояние завершения каждой задачи в списке. Пользователи могут добавлять задачи в список и удалять их. Также можно обновлять состояние завершения каждой задачи.

Создание области формы с помощью конструктора области формы Outlook

  1. Запустите приложение Microsoft Office Outlook 2007.

  2. В меню Сервис выберите Формы, затем пункт Создать форму.

  3. В окне Создать форму выберите Задача, затем нажмите кнопку Открыть.

  4. На вкладке Разработчик в группе Создать выберите Область формы, а затем Новая область формы.

    Откроется новая область формы. Если не появится окно Выбор поля, нажмите Выбор поля в группе Средства.

  5. Перетащите поле Тема и поле % завершено из окна Выбор поля в область формы.

  6. В группе Средства выберите Панель элементов управления, чтобы открыть Панель элементов.

  7. Перетащите метку из Панели элементов в область формы. Разместите метку под полями Тема и % завершено.

  8. Щелкните правой кнопкой мыши метку, затем выберите Дополнительные свойства.

  9. В окне Свойства в качестве Заголовка выберите Данная задача зависит от следующих задач, затем установите Ширину на 200 и нажмите кнопку Применить.

  10. Перетащите элемент управления ListBox из Панели элементов в область формы. Разместите список под меткой Данная задача зависит от следующих задач.

  11. Выберите только что добавленный список.

  12. В окне Свойства установите Ширину на 300 и нажмите кнопку Применить.

  13. Перетащите метку из панели элементов в область формы. Разместите метку под списком.

  14. Выберите только что добавленную метку.

  15. В окне Свойства в качестве Заголовка выберите Выбрать задачу, которую необходимо добавить в список зависимых задач, затем установите Ширину на 200 и нажмите кнопку Применить.

  16. Перетащите элемент управления ComboBox из Панели элементов в область формы. Разместите поле со списком под меткой Выбрать задачу, которую необходимо добавить в список зависимых задач.

  17. Выберите только что добавленное поле со списком.

  18. В окне Свойства установите Ширину на 300 и нажмите кнопку Применить.

  19. Перетащите элемент управления CommandButton из Панели элементов в область формы. Разместите кнопку рядом с полем со списком.

  20. Выберите только что добавленную кнопку.

  21. В окне Свойства в качестве Имени выберите AddDependentTask, в Заголовке выберите Добавить зависимую задачу, установите Ширину на 100 и нажмите кнопку Применить.

  22. В окне Выбор поля нажмите Новое.

  23. В диалоговом окне Новое поле в поле Имя введите hiddenField и нажмите кнопку .

  24. Перетащите поле hiddenField из окна Выбор поля в область формы.

  25. В окне Свойства установите Видимость на 0 - False и нажмите кнопку Применить.

  26. На вкладке Разработчик в группе Создать выберите Область формы, а затем нажмите Сохранить область формы как. Назовите область формы TaskFormRegion и сохраните в каталог локального компьютера.

    В Outlook область формы сохраняется в виде файла Outlook Form Storage (.ofs). Область формы сохраняется под именем TaskFormRegion.ofs.

  27. Закройте приложение Outlook.

Создание нового проекта надстройки Outlook

На данном этапе осуществляется создание проекта надстройки Outlook. Далее в пошаговом руководстве описывается процедура импорта области формы в проект.

Создание нового проекта надстройки Outlook

  1. В Visual Studio создайте проект надстройки Outlook 2007 с именем TaskAddIn.

  2. В диалоговом окне Создание проекта выберите Создать каталог для решения.

  3. Сохраните проект в каталог проекта по умолчанию.

    Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.

Импорт области формы

Мастер Новая область формы Outlook позволяет импортировать область формы, созданную в Outlook, в проект надстройки Outlook.

Импорт области формы в проект надстройки Outlook

  1. В Обозревателе решений щелкните правой кнопкой мыши проектTaskAddIn, выберите Добавить, а затем Новый элемент.

  2. В области Шаблоны выберите Область формы Outlook, назовите файл TaskFormRegion и нажмите кнопку Добавить.

    Запускается мастер NewОбласть формы Outlook.

  3. На странице Способ создания области формы нажмите Импортировать файл Outlook Form Storage (.ofs), а затем кнопку Обзор.

  4. В диалоговом окне Размещение файла области формы Outlook найдите размещение файла TaskFormRegion.ofs, выберите файл TaskFormRegion.ofs, нажмите кнопку Открыть, а затем кнопку Далее.

  5. На странице Тип создаваемой области формы выберите Заменяющая все и нажмите кнопку Далее.

    Область формы заменяющая все заменяет всю форму Outlook. Дополнительные сведения о типах областей формы см. в разделе Создание областей форм Outlook.

  6. На странице Ввод описания и выбор параметров отображения нажмите кнопку Далее.

  7. На странице Классы сообщений для отображения в области формы в поле Пользовательские классы сообщений для отображения в области формы введите IPM.Task.TaskFormRegion, а затем нажмите кнопку Готово.

    В проект добавляется файл TaskFormRegion.cs или TaskFormRegion.vb.

Обработка событий элементов управления в области формы.

После импорта области формы в проект можно добавить код, который обрабатывает событие кнопки Microsoft.Office.Interop.Outlook.OlkCommandButton.Click, добавленное в область формы в Outlook.

Также можно добавить код в событие 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 следующий код. Этот код выполняет следующие задачи:

    • размещает Microsoft.Office.Interop.Outlook.TaskItem в папку "Задачи" путем вызова вспомогательного метода FindTaskBySubjectName и передачи темы необходимой задачи. Вспомогательный метод 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;
            }
        }
    
  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 следующий код. Этот код выполняет следующие задачи:

    • обновляет список области формы текущим состоянием завершения каждой зависимой задачи;

    • выполняет синтаксический анализ скрытого текстового поля, чтобы получить тему каждой зависимой задачи; размещает каждый Microsoft.Office.Interop.Outlook.TaskItem в папку "Задачи" путем вызова вспомогательного метода FindTaskBySubjectName и передачи темы каждой задачи;

    • добавляет значения 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);
            }
        }
    }
    
  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 наведите указатель мыши на пункт Создать и нажмите Задача.

  3. В поле Тема формы задач введите Зависимая задача.

  4. На вкладке ленты Задача в группе Действия нажмите кнопку Сохранить и закрыть.

  5. В меню Файл приложения Outlook наведите указатель мыши на кнопку Создать и нажмите Выбрать форму.

  6. В диалоговом окне Выбрать форму нажмите TaskFormRegion, а затем кнопку Открыть.

    Появится область формы TaskFormRegion. Эта форма полностью заменяет всю форму задач. Поле со списком Выбрать задачу, которую необходимо добавить в список зависимых задач заполняется другими задачами из папки "Задачи".

  7. В поле Тема формы задач введите Основная задача.

  8. В поле со списком Выбрать задачу, которую необходимо добавить в список зависимых задач выберите Зависимые задачи, а затем нажмите Добавить зависимую задачу.

    В списке Данная задача зависит от следующих задач появится 0% завершено — Зависимая задача. Это означает, что обработка события кнопки Microsoft.Office.Interop.Outlook.OlkCommandButton.Click успешно выполнена.

  9. Сохраните и закройте элемент Основная задача.

  10. Повторно откройте зависимую задачу в приложении Outlook.

  11. В форме зависимой задачи измените значение поля % завершено на 50%.

  12. На вкладке Задача ленты зависимой задачи в группе Действия нажмите кнопку Сохранить и закрыть.

  13. Повторно откройте Основную задачу в приложении Outlook.

    В списке Данная задача зависит от следующих задач теперь будет отображаться 50% завершено — Зависимая задача.

Следующие действия

Дополнительные сведения о настройке пользовательского интерфейса приложения Outlook см. в следующих разделах:

См. также

Задачи

Пошаговое руководство. Разработка области формы Outlook

Практическое руководство. Добавление области формы в проект надстройки Outlook

Практическое руководство. Отсутствие отображения области формы в Outlook

Практическое руководство. Доступ к элементу Outlook, который отображает область формы

Основные понятия

Доступ к области формы во время выполнения

Создание областей форм Outlook

Рекомендации по созданию областей формы Outlook

Связывание области формы с классом сообщений Outlook

Пользовательские действия в областях форм Outlook