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


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

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

Применение

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

Тип проекта

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

Версия Microsoft Office

  • Outlook 2007

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

Настраиваемые области форм расширяют стандартные или пользовательские формы Microsoft Office Outlook 2007. В данном пошаговом руководстве будет разработана настраиваемая область формы, которая должна появляться как новая страница в окне инспектора элемента контактов. В этой области формы отображается карта для каждого контактного адреса путем отправки информации об адресе на веб-узел локального поиска Windows Live.

Сведения об областях формы см. в разделе Создание областей форм Outlook.

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

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

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

  • Разработка структуры этой области формы.

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

  • Тестирование области формы Outlook.

Bb157865.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.

  • Подключение к сети Интернет для использования службы локального поиска.

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

Сначала создается основной проект надстройки.

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

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

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

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

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

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

Решение надстройки Outlook может содержать один или несколько элементов областей форм Outlook. Элемент области формы добавляется в проект с помощью мастера Новая область формы Outlook.

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

  1. В Обозревателе решений выберите проект MapItAddIn.

  2. В меню Проект выберите команду Добавить новый элемент.

  3. В диалоговом окне Добавление нового элемента выберите Область формы Outlook, дайте файлу имя MapIt и нажмите кнопку Добавить.

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

  4. На странице Способ создания области формы нажмите Создать новую область формы, а затем нажмите кнопку Далее.

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

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

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

    Это имя будет отображаться в ленте окна инспектора при открытии соответствующего элемента контактов.

  7. Выберите Инспекторы в режиме сообщения и Инспекторы в режиме чтения, затем нажмите кнопку Далее.

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

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

Разработка структуры области формы.

Визуальная разработка областей форм с помощью конструктора областей форм: Можно перетаскивать управляемые элементы управления на рабочую поверхность конструктора областей форм. Для настройки структуры и внешнего вида элемента управления используется конструктор и окно Свойства.

Разработка структуры области формы

  1. В обозревателе решений разверните проект MapItAddIn, а затем дважды щелкните файл MapIt.cs или MapIt.vb, чтобы открыть конструктор областей форм.

  2. Щелкните правой кнопкой мыши конструктор и нажмите Свойства.

  3. В окне Свойства задайте для свойства Размер значение 664, 469.

    Такое значение гарантирует, что размер области формы будет достаточно большим для отображения карты.

  4. В меню Вид выберите пункт Панель элементов.

  5. В панели элементов во вкладке Общие элементы управления добавьте в область формы Веб-обозреватель.

    Веб-обозреватель будет отображать карту каждого адреса, включенного в список контактов.

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

Для настройки поведения области формы во время выполнения в обработчики событий области формы добавляется код. Для данной области формы код проверяет свойства элемента Outlook и определяет, должна ли отображаться область формы "Сопоставление". Если область формы отображается, то код переходит в локальный поиск Windows Live и загружает карту для каждого адреса, включенного в элемент контактов Outlook.

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

  1. В обозревателе решений щелкните правой клавишей мыши файл MapIt.cs или MapIt.vb, а затем выберите команду Просмотреть код.

    Файл MapIt.cs или MapIt.vb открывается в редакторе кода.

  2. Разверните область кода Производство областей формы.

    Будет развернут класс производства областей формы с именем MapItFactory.

  3. В обработчик событий MapItFactory_FormRegionInitializing добавьте следующий код. Этот обработчик событий вызывается, когда пользователь открывает элемент контактов. В следующем коде определяется, содержит ли элемент контактов какой-либо адрес. Если в элементе контактов нет адресов, то код устанавливает для свойства Cancel класса FormRegionInitializingEventArgs значение true, и область формы не отображается. В противном случае надстройка вызывает событие FormRegionShowing и отображает область формы.

    Private Sub MapItFactory_FormRegionInitializing(ByVal sender As Object, ByVal e As Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs) Handles Me.FormRegionInitializing
    
        Dim myItem As Outlook.ContactItem = CType(e.OutlookItem, Outlook.ContactItem)
    
        If Not (myItem Is Nothing) Then
            If Not (myItem.BusinessAddress Is Nothing) AndAlso myItem.BusinessAddress.Trim().Length > 0 Or (Not (myItem.HomeAddress Is Nothing) AndAlso myItem.HomeAddress.Trim().Length > 0) Or (Not (myItem.OtherAddress Is Nothing) AndAlso myItem.OtherAddress.Trim().Length > 0) Then
                Return
            End If
        End If
    
        e.Cancel = True
    
    End Sub
    
    private void MapItFactory_FormRegionInitializing(object sender,
        Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)
    {
        Outlook.ContactItem myItem = (Outlook.ContactItem)e.OutlookItem;
    
        if (myItem != null)
        {
            if ((myItem.BusinessAddress != null &&
                    myItem.BusinessAddress.Trim().Length > 0) ||
                (myItem.HomeAddress != null && 
                    myItem.HomeAddress.Trim().Length > 0) ||
                (myItem.OtherAddress != null && 
                    myItem.OtherAddress.Trim().Length > 0))
            {
                return;
            }
        }
    
        e.Cancel = true;
    }
    
  4. В обработчик событий FormRegionShowing добавьте нижеприведенный код. Этот код выполняет следующие задачи:

    • Сцепляет каждый адрес в элементе контактов и создает строку URL-адреса.

    • Вызывает метод Navigate объекта WebBrowser и передает строку URL-адреса в качестве параметра.

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

    Private Sub MapIt_FormRegionShowing(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        Dim tempLoc As String = ""
        Dim defaultAddress As String = ""
        Dim scratchPadAddress As String = ""
    
        Dim myItem As Outlook.ContactItem = _
            CType(Me.OutlookItem, Outlook.ContactItem)
    
        If Not (myItem Is Nothing) Then
            If Not (myItem.HomeAddress Is Nothing) And _
                myItem.HomeAddress.Trim().Length > 0 Then
                tempLoc = myItem.HomeAddressStreet.Trim() + " " _
                    + myItem.HomeAddressCity + " " + myItem.HomeAddressState + _
                        " " + myItem.HomeAddressPostalCode
                If myItem.HomeAddress = myItem.MailingAddress Then
                    defaultAddress = tempLoc + "_Home"
                Else
                    scratchPadAddress += "adr." + tempLoc + "_Home~"
                End If
            End If
            If Not (myItem.BusinessAddress Is Nothing) And _
                myItem.BusinessAddress.Trim().Length > 0 Then
                tempLoc = myItem.BusinessAddressStreet.Trim() + " " _
                    + myItem.BusinessAddressCity + " " + _
                        myItem.BusinessAddressState + " " + _
                            myItem.BusinessAddressPostalCode
                If myItem.BusinessAddress = myItem.MailingAddress Then
                    defaultAddress = tempLoc + "_Business"
                Else
                    scratchPadAddress += "adr." + tempLoc + "_Business~"
                End If
            End If
            If Not (myItem.OtherAddress Is Nothing) And _
                myItem.OtherAddress.Trim().Length > 0 Then
                tempLoc = myItem.OtherAddressStreet.Trim() + " " + _
                    myItem.OtherAddressCity + " " + myItem.OtherAddressState + _
                        " " + myItem.OtherAddressPostalCode
                If myItem.OtherAddress = myItem.MailingAddress Then
                    defaultAddress = tempLoc + "_Other"
                Else
                    scratchPadAddress += "adr." + tempLoc + "_Other~"
                End If
            End If
        End If
    
        WebBrowser1.Navigate(("http://local.live.com/default.aspx?style=r&where1=" _
            + defaultAddress + "&sp=" + scratchPadAddress))
    
    End Sub
    
    private void MapIt_FormRegionShowing(object sender, EventArgs e)
    {
        string tempLoc = "";
        string defaultAddress = "";
        string scratchPadAddress = "";
    
        Outlook.ContactItem myItem = (Outlook.ContactItem)this.OutlookItem;
    
        if (myItem != null)
        {
            if (myItem.HomeAddress != null && 
                    myItem.HomeAddress.Trim().Length > 0)
            {
                tempLoc = myItem.HomeAddressStreet.Trim() + " " + 
                    myItem.HomeAddressCity + " " + myItem.HomeAddressState + 
                        " " + myItem.HomeAddressPostalCode;
                if (myItem.HomeAddress == myItem.MailingAddress)
                {
                    defaultAddress = tempLoc + "_Home";
                }
                else
                {
                    scratchPadAddress += "adr." + tempLoc + "_Home~";
                }
            }
            if (myItem.BusinessAddress != null && 
                    myItem.BusinessAddress.Trim().Length > 0)
            {
                tempLoc = myItem.BusinessAddressStreet.Trim() + 
                    " " + myItem.BusinessAddressCity + " " + 
                        myItem.BusinessAddressState + " " + 
                            myItem.BusinessAddressPostalCode;
                if (myItem.BusinessAddress == myItem.MailingAddress)
                {
                    defaultAddress = tempLoc + "_Business";
                }
                else
                {
                    scratchPadAddress += "adr." + tempLoc + "_Business~";
                }
            }
            if (myItem.OtherAddress != null && myItem.OtherAddress.Trim().Length > 0)
            {
                tempLoc = myItem.OtherAddressStreet.Trim() + " " + 
                    myItem.OtherAddressCity + " " + myItem.OtherAddressState + 
                        " " + myItem.OtherAddressPostalCode;
                if (myItem.OtherAddress == myItem.MailingAddress)
                {
                    defaultAddress = tempLoc + "_Other";
                }
                else
                {
                    scratchPadAddress += "adr." + tempLoc + "_Other~";
                }
            }
        }
    
        webBrowser1.Navigate("http://local.live.com/default.aspx?style=r&where1=" 
            + defaultAddress + "&sp=" + scratchPadAddress);
    
    }
    

Тестирование области формы Outlook

При выполнении проекта Visual Studio Tools for Office запускает надстройку и открывает Outlook. Чтобы увидеть область формы "Сопоставление", необходимо открыть элемент контактов. Область формы "Сопоставление" появляется как страница в форме каждого элемента контактов, содержащего адрес.

Тестирование области формы "Сопоставление"

  1. Нажмите клавишу F5 для запуска проекта.

    Откроется приложение Outlook.

  2. В Outlook в меню Файл переместите указатель мыши на Создать и нажмите Контакт.

  3. В форме контактов введите имя контакта Анна Белова, а затем укажите следующие три адреса.

    Тип адреса

    Адрес

    Рабочий

    г. Москва, ул. Профсоюзная, 50

    Домашний

    г. Москва, ул. Зеленая, 123-45

    Другой

    г. Таруса Калужской обл., ул. Цветаевой, 12

  4. Сохраните и закройте элемент контактов.

  5. Снова откройте элемент контактов Анна Белова.

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

    Появляется область формы "Сопоставление", и отображает веб-узел локального поиска. В блокноте появляются адреса Рабочий, Домашний и Другой. Выберите в блокноте адрес, который требуется сопоставить.

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

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

См. также

Задачи

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

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

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

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

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

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

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

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

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

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