Пошаговое руководство. Импорт области формы, созданной в Outlook
В данном пошаговом руководстве демонстрируется создание области формы в Microsoft Office Outlook, а также ее импорт в проект надстройки Outlook с помощью мастера Новая область формы.Создание области формы в Outlook позволяет добавить собственные элементы управления Outlook в область формы, связанную с данными Outlook.После импорта области формы можно обрабатывать события каждого элемента управления.
Применение. Сведения этого раздела применяются к проектам уровня приложения для Outlook 2013 и Outlook 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
В данном пошаговом руководстве рассмотрены следующие задачи:
создание области формы с помощью конструктора области формы Outlook;
импорт области формы в проект надстройки Outlook;
обработка событий элементов управления в области формы.
Примечание |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
-
Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений 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 на вкладке Разработчик в группе Разработка, нажмите кнопку новая область формы.
Откроется новая область формы.Если не появится окно Выбор поля, нажмите Выбор поля в группе Средства.
Перетащите поле Тема и поле % завершено из окна Выбор поля в область формы.
В группе Средства выберите Панель элементов управления, чтобы открыть Панель элементов.
Перетащите метку из панели элементов в область формы.Разместите метку под полями Тема и % завершено.
Щелкните правой кнопкой мыши метку, затем выберите Дополнительные свойства.
В окне Свойства для свойства Заголовок выберите значение "Данная задача зависит от следующих задач", затем установите для свойства Ширина значение 200 и нажмите кнопку Применить.
Перетащите элемент управления ListBox из Панели элементов в область формы.Разместите список под меткой Данная задача зависит от следующих задач.
Выберите только что добавленный список.
В окне Свойства установите для свойства Ширина значение "300" и нажмите кнопку Применить.
Перетащите метку из панели элементов в область формы.Разместите метку под списком.
Выберите только что добавленную метку.
В окне Свойства установите для свойства Заголовок значение "Выбрать задачу, которую необходимо добавить в список зависимых задач", затем установите для свойства Ширина значение "200" и нажмите кнопку Применить.
Перетащите элемент управления ComboBox из Панели элементов в область формы.Разместите поле со списком под меткой Выбрать задачу, которую необходимо добавить в список зависимых задач.
Выберите только что добавленное поле со списком.
В окне Свойства установите для свойства Ширина значение "300" и нажмите кнопку Применить.
Перетащите элемент управления CommandButton из Панели элементов в область формы.Разместите кнопку рядом с полем со списком.
Выберите только что добавленную кнопку.
В окне Свойства установите для свойства Имя значение AddDependentTask, установите для свойства Заголовок значение "Добавить зависимую задачу", установите для свойства Ширина значение "100" и нажмите кнопку Применить.
В окне Выбор поля нажмите Новое.
В диалоговом окне Новое поле в поле Имя введите hiddenField и нажмите кнопку ОК.
Перетащите поле hiddenField из окна Выбор поля в область формы.
В окне Свойства установите для свойства Видимый значение 0 — False и нажмите кнопку Применить.
В outlook на вкладке Разработчик в группе Разработка нажмите кнопку Сохранить и нажмите кнопку Сохраните область формы как.
Назовите область формы TaskFormRegion и сохраните в каталог локального компьютера.
В Outlook область формы сохраняется в виде файла Outlook Form Storage (.ofs).Область формы сохраняется под именем TaskFormRegion.ofs.
Закройте приложение Outlook.
Создание нового проекта надстройки для Outlook
На данном этапе осуществляется создание проекта надстройки Outlook. Далее в пошаговом руководстве описывается процедура импорта области формы в проект.
Создание нового проекта надстройки Outlook
В Visual Studio создайте проект надстройки Outlook с именем TaskAddIn.
В диалоговом окне Новый проект выберите команду Создать каталог для решения.
Сохраните проект в каталог проекта по умолчанию.
Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
Импорт области формы
Мастер Новая область формы Outlook позволяет импортировать область формы, созданную в Outlook, в проект надстройки Outlook.
Импорт области формы в проект надстройки Outlook
В обозревателе решений щелкните правой кнопкой мыши проектTaskAddIn, выберите Добавить, а затем Новый элемент.
В области Шаблоны выберите Область формы Outlook, назовите файл TaskFormRegion и нажмите кнопку Добавить.
Запускается мастер Новаяобласть формы Outlook.
На странице Способ создания области формы нажмите Импортировать файл Outlook Form Storage (.ofs), а затем кнопку Обзор.
В диалоговом окне Размещение файла области формы Outlook найдите размещение файла TaskFormRegion.ofs, выберите файл TaskFormRegion.ofs, нажмите кнопку Открыть, а затем кнопку Далее.
На странице Тип создаваемой области формы выберите Заменяющая все и нажмите кнопку Далее.
Область формы заменяющая все заменяет всю форму Outlook.Дополнительные сведения о типах областей формы см. в разделе Создание областей форм Outlook.
На странице Ввод описания и выбор параметров отображения нажмите кнопку Далее.
На странице Классы сообщений для отображения в области формы в поле Пользовательские классы сообщений для отображения в области формы введите IPM.Task.TaskFormRegion, затем нажмите кнопку Готово.
В проект добавляется файл TaskFormRegion.cs или TaskFormRegion.vb.
Обработка событий элементов управления в области формы.
После импорта области формы в проект можно добавить код, который обрабатывает событие кнопки Microsoft.Office.Interop.Outlook.OlkCommandButton.Click, добавленное в область формы в Outlook.
Также можно добавить код в событие 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 следующий код.Этот код выполняет следующие задачи:
размещает 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; } }
Добавьте в класс 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 следующий код.Этот код выполняет следующие задачи:
обновляет список области формы текущим состоянием завершения каждой зависимой задачи;
выполняет синтаксический анализ скрытого текстового поля, чтобы получить тему каждой зависимой задачи;размещает каждый 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); } } }
Замените обработчик событий 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 на вкладке Главная, нажмите кнопку Новые элементы и нажмите кнопку Задача.
В поле Тема формы задач введите "Зависимая задача".
На вкладке ленты Задача в группе Действия нажмите кнопку Сохранить и закрыть.
В outlook на вкладке Главная, нажмите кнопку Новые элементы, нажмите кнопку Несколько элементов и нажмите кнопку Выберите форму.
В диалоговом окне Выбрать форму нажмите TaskFormRegion, а затем кнопку Открыть.
Появится область формы TaskFormRegion.Эта форма полностью заменяет всю форму задач.Поле со списком Выбрать задачу, которую необходимо добавить в список зависимых задач заполняется другими задачами из папки "Задачи".
В поле Тема формы задач введите "Основная задача".
В поле со списком Выбрать задачу, которую необходимо добавить в список зависимых задач выберите Зависимые задачи, а затем нажмите Добавить зависимую задачу.
В списке Данная задача зависит от следующих задач появится 0% завершено — Зависимая задача.Это означает, что обработка события кнопки Microsoft.Office.Interop.Outlook.OlkCommandButton.Click успешно выполнена.
Сохраните и закройте элемент Основная задача.
Повторно откройте зависимую задачу в приложении Outlook.
В форме зависимой задачи измените значение поля % завершено на 50 %.
На вкладке Задача ленты зависимой задачи в группе Действия нажмите кнопку Сохранить и закрыть.
Повторно откройте Основную задачу в приложении Outlook.
В списке Данная задача зависит от следующих задач теперь будет отображаться 50 % завершено — Зависимая задача.
Следующие действия
Дополнительные сведения о настройке пользовательского интерфейса приложения Outlook см. в следующих разделах:
Дополнительные сведения о настройке внешнего вида области формы с помощью перетаскивания элементов управления в визуальный конструктор см. в разделе Пошаговое руководство. Разработка области формы Outlook.
Дополнительные сведения о настройке ленты элемента Outlook см. в разделе Настройка ленты для Outlook.
Дополнительные сведения о добавлении пользовательской области задач в приложение Outlook см. в разделе Настраиваемые области задач.
См. также
Задачи
Пошаговое руководство. Разработка области формы Outlook
Практическое руководство. Добавление области формы в проект надстройки Outlook
Практическое руководство. Отсутствие отображения области формы в Outlook
Основные понятия
Доступ к области формы во время выполнения
Рекомендации по созданию областей формы Outlook
Связывание области формы с классом сообщений Outlook
Пользовательские действия в областях форм Outlook