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


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

Настраиваемые области форм расширяют стандартные или пользовательские формы Microsoft Office Outlook. В данном пошаговом руководстве будет разработана настраиваемая область формы, которая должна появляться как новая страница в окне инспектора элемента контактов.В этой области формы отображается карта для каждого контактного адреса путем отправки информации об адресе на веб-узел локального поиска Windows Live.Сведения об областях формы см. в разделе Создание областей форм 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.

ссылка на видео Для просмотра видеоверсии этого раздела перейдите по ссылке Видео: создание области формы Outlook (страница может быть на английском языке).

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

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

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

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

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

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

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

Добавление области формы в проект надстройки 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 открывает приложение Outlook.Чтобы увидеть область формы "Сопоставление", необходимо открыть элемент контактов.Область формы "Сопоставление" появляется как страница в форме каждого элемента контактов, содержащего адрес.

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

  1. Чтобы запустить проект, нажмите клавишу F5.

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

  2. В outlook на вкладке Главная, нажмите кнопку Новые элементы и нажмите кнопку Контакт.

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

    Тип адреса

    Адрес

    Рабочий

    Центральная ул., д. 123Приозерск, Ленинградская обл.

    Главная

    Цветочная ул., 34Приозерск, Ленинградская обл.

    Другой

    Центральная ул., д. 78Псков, Псковская обл.

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

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

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

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

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

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

См. также

Задачи

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

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

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

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

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

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

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

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

Другие ресурсы

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