Пошаговое руководство. Импорт области формы, созданной в Outlook
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
В данном пошаговом руководстве демонстрируется создание области формы в Microsoft Office Outlook, а также ее импорт в проект настройки Outlook Visual Studio Tools for Office с помощью мастера Новая область формы. Создание области формы в Outlook позволяет добавить собственные элементы управления Outlook в область формы, связанную с данными Outlook. После импорта области формы можно обрабатывать события каждого элемента управления.
В данном пошаговом руководстве демонстрируются следующие задачи:
создание области формы с помощью конструктора области формы Outlook;
импорт области формы в проект надстройки Outlook;
обработка событий элементов управления в области формы.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Для выполнения инструкций данного пошагового руководства необходимы следующие компоненты.
Visual Studio Tools for Office (необязательный компонент Visual Studio 2008 Professional и Visual Studio Team System).
Microsoft Office Outlook 2007.
Примечание. |
---|
На компьютере могут отображаться имена или расположения некоторых элементов пользовательского интерфейса Visual Studio, отличающиеся от указанных в дальнейших инструкциях. Эти элементы определяются используемой версией Visual Studio и ее параметрами. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Создание области формы с помощью конструктора области формы Outlook
На данном этапе осуществляется создание области формы в Outlook. Затем необходимо сохранить область формы в доступное расположение, чтобы иметь возможность импортировать ее в Visual Studio.
Эта область формы полностью заменяет обычную форму задач. Она дает возможность отслеживать ход выполнения всех задач, которые должны быть завершены перед выполнением главной задачи (обязательные задачи). Область формы отображает список обязательных задач, а также состояние завершения каждой задачи в списке. Пользователи могут добавлять задачи в список и удалять их. Также можно обновлять состояние завершения каждой задачи.
Создание области формы с помощью конструктора области формы Outlook
Запустите приложение Microsoft Office Outlook 2007.
В меню Сервис выберите Формы, затем пункт Создать форму.
В окне Создать форму выберите Задача, затем нажмите кнопку Открыть.
На вкладке Разработчик в группе Создать выберите Область формы, а затем Новая область формы.
Откроется новая область формы. Если не появится окно Выбор поля, нажмите Выбор поля в группе Средства.
Перетащите поле Тема и поле % завершено из окна Выбор поля в область формы.
В группе Средства выберите Панель элементов управления, чтобы открыть Панель элементов.
Перетащите метку из Панели элементов в область формы. Разместите метку под полями Тема и % завершено.
Щелкните правой кнопкой мыши метку, затем выберите Дополнительные свойства.
В окне Свойства в качестве Заголовка выберите Данная задача зависит от следующих задач, затем установите Ширину на 200 и нажмите кнопку Применить.
Перетащите элемент управления ListBox из Панели элементов в область формы. Разместите список под меткой Данная задача зависит от следующих задач.
Выберите только что добавленный список.
В окне Свойства установите Ширину на 300 и нажмите кнопку Применить.
Перетащите метку из панели элементов в область формы. Разместите метку под списком.
Выберите только что добавленную метку.
В окне Свойства в качестве Заголовка выберите Выбрать задачу, которую необходимо добавить в список зависимых задач, затем установите Ширину на 200 и нажмите кнопку Применить.
Перетащите элемент управления ComboBox из Панели элементов в область формы. Разместите поле со списком под меткой Выбрать задачу, которую необходимо добавить в список зависимых задач.
Выберите только что добавленное поле со списком.
В окне Свойства установите Ширину на 300 и нажмите кнопку Применить.
Перетащите элемент управления CommandButton из Панели элементов в область формы. Разместите кнопку рядом с полем со списком.
Выберите только что добавленную кнопку.
В окне Свойства в качестве Имени выберите AddDependentTask, в Заголовке выберите Добавить зависимую задачу, установите Ширину на 100 и нажмите кнопку Применить.
В окне Выбор поля нажмите Новое.
В диалоговом окне Новое поле в поле Имя введите hiddenField и нажмите кнопку OК.
Перетащите поле hiddenField из окна Выбор поля в область формы.
В окне Свойства установите Видимость на 0 - False и нажмите кнопку Применить.
На вкладке Разработчик в группе Создать выберите Область формы, а затем нажмите Сохранить область формы как. Назовите область формы TaskFormRegion и сохраните в каталог локального компьютера.
В Outlook область формы сохраняется в виде файла Outlook Form Storage (.ofs). Область формы сохраняется под именем TaskFormRegion.ofs.
Закройте приложение Outlook.
Создание нового проекта надстройки Outlook
На данном этапе осуществляется создание проекта надстройки Outlook. Далее в пошаговом руководстве описывается процедура импорта области формы в проект.
Создание нового проекта надстройки Outlook
В Visual Studio создайте проект надстройки Outlook 2007 с именем TaskAddIn.
В диалоговом окне Создание проекта выберите Создать каталог для решения.
Сохраните проект в каталог проекта по умолчанию.
Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.
Импорт области формы
Мастер Новая область формы Outlook позволяет импортировать область формы, созданную в Outlook, в проект надстройки Outlook.
Импорт области формы в проект надстройки Outlook
В Обозревателе решений щелкните правой кнопкой мыши проектTaskAddIn, выберите Добавить, а затем Новый элемент.
В области Шаблоны выберите Область формы Outlook, назовите файл TaskFormRegion и нажмите кнопку Добавить.
Запускается мастер NewОбласть формы 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