共用方式為


逐步解說:設計 Outlook 表單區域

自訂表單區域可擴充標準或自訂的 Microsoft Office Outlook 表單。 在本逐步解說中,您將設計自訂表單區域,以在連絡人項目的 [偵測器] 視窗中顯示為新頁面。 此表單區域會將地址資訊傳送到 Windows Live Local Search 網站,以便針對所列出的每一筆連絡人地址顯示地圖。 如需表單區域的詳細資訊,請參閱建立 Outlook 表單區域

**適用於:**本主題中的資訊適用於 Outlook 2007 和 Outlook 2010 的應用程式層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

這個逐步解說將說明下列工作:

  • 建立新的 Outlook 增益集專案。

  • 將表單區域加入至增益集專案。

  • 設計表單區域的配置。

  • 自訂表單區域的行為。

  • 測試 Outlook 表單區域。

注意事項注意事項

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本和使用的設定決定了這些項目。 如需詳細資訊,請參閱 使用設定

必要條件

您需要下列元件才能完成此逐步解說:

-

包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。
  • Microsoft Office Outlook 2007 或 Outlook 2010。

視訊的連結 如需觀看本主題的影片版本,請參閱影片 HOW TO:設計 Outlook 表單區域 (英文)。

建立新的 Outlook 增益集專案

首先建立基本的增益集專案。

若要建立新的 Outlook 增益集專案

  1. 在 Visual Studio 中,建立名稱為 MapItAddIn 的 Outlook 增益集專案。

  2. 選取 [新增專案] 對話方塊中的 [為方案建立目錄]。

  3. 將專案儲存至任何目錄。

    如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案

將表單區域加入至 Outlook 增益集專案

一個 Outlook 增益集方案可包含一個或多個 Outlook 表單區域項目。 請使用 [新的 Outlook 表單區域] 精靈,將表單區域項目加入至專案。

若要將表單區域加入至 Outlook 增益集專案

  1. 選取 [方案總管] 中的 [MapItAddIn] 專案。

  2. 按一下 [專案] 功能表上的 [加入新項目]。

  3. 在 [加入新項目] 對話方塊中,選取 [Outlook 表單區域] 並將檔案命名為 MapIt,然後按一下 [加入]。

    [新的 Outlook 表單區域] 精靈隨即啟動。

  4. 按一下 [選取您希望如何建立此表單區域] 頁面上的 [設計新的表單區域],然後按 [下一步]。

  5. 按一下 [選取您要建立的表單區域類型] 頁面上的 [獨立型],然後按 [下一步]。

    「獨立型」(Separate) 表單區域會將新的頁面加入至 Outlook 表單中。 如需表單區域類型的詳細資訊,請參閱建立 Outlook 表單區域

  6. 在 [提供描述文字和選取顯示設定] 頁面上的 [名稱] 方塊中,輸入 Map It。

    這個名稱會在連絡人項目開啟時,出現在 [偵測器] 視窗的功能區上。

  7. 選取 [處於撰寫模式的偵測器] 和 [處於讀取模式的偵測器],然後按 [下一步]。

  8. 清除 [識別將顯示此表單區域的訊息類別] 頁面上的 [郵件],選取 [連絡人],然後按一下 [完成]。

    MapIt.cs 或 MapIt.vb 檔案就會加入至專案中。

設計表單區域的版面配置

使用「表單區域設計工具」(Form Region Designer),以視覺化方式開發表單區域。 您可以將 Managed 控制項拖放至表單區域設計工具介面。 使用設計工具和 [屬性] 視窗來調整控制項的配置和外觀。

若要設計表單區域的配置

  1. 在 [方案總管] 中,展開 [MapItAddIn] 專案,然後按兩下 MapIt.cs 或 MapIt.vb 來開啟表單區域設計工具。

  2. 以滑鼠右鍵按一下設計工具,然後按一下 [屬性]。

  3. 在 [屬性] 視窗中,將 [Size] 設定為 664, 469。

    這樣可確保表單區域的大小足以顯示地圖。

  4. 在 [檢視] 功能表上,按一下 [工具箱]。

  5. 從 [工具箱] 的 [通用控制項] 索引標籤,將 [WebBrowser] 加入至表單區域。

    [WebBrowser] 將針對列出的每個連絡人地址顯示其地圖。

自訂表單區域的行為

將程式碼加入至表單區域事件處理常式,以自訂表單區域在執行階段的行為。 程式碼會針對此表單區域檢查 Outlook 項目屬性,並判斷是否要顯示 Map It 表單區域。 如果它顯示了表單區域,則程式碼會巡覽至 Windows Live Local Search 並針對列在 Outlook 連絡人項目中的每筆地址載入其地圖。

若要自訂表單區域的行為

  1. 以滑鼠右鍵按一下 [方案總管] 中的 MapIt.cs 或 MapIt.vb,然後按一下 [檢視程式碼]。

    MapIt.cs 或 MapIt.vb 隨即在 [程式碼編輯器] 中開啟。

  2. 展開 [表單區域 Factory] 程式碼區域。

    名為 MapItFactory 的表單區域 Factory 類別隨即出現。

  3. 將下列程式碼加入至 MapItFactory_FormRegionInitializing 事件處理常式。 使用者開啟連絡人項目時會呼叫這個事件處理常式。 下列程式碼可判斷連絡人項目是否包含地址。 如果連絡人項目未包含地址,則此程式碼會將 FormRegionInitializingEventArgs 類別的 Cancel 屬性設為 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 字串。

    • 呼叫 WebBrowser 物件的 Navigate 方法,並將 URL 字串當做參數傳遞。

    Local Search 網站會出現在 Map It 表單區域中,並在便條簿中顯示每筆地址。

    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。 請開啟連絡人項目以檢視 Map It 表單區域。 Map It 表單區域會在包含地址的任何連絡人項目之表單內顯示成頁面。

若要測試 Map It 表單區域

  1. 按 F5 執行專案。

    Outlook 隨即開啟。

  2. 在 Outlook 中,執行下列其中一項工作以建立連絡人:

    • 在 Outlook 2010 中,按一下 [首頁] 索引標籤上的 [新增項目],然後按一下 [連絡人]。

    • 在 Outlook 2007 中,於 [檔案] 功能表上指向 [新增],然後按一下 [連絡人]。

  3. 在連絡人表單中,輸入 Ann Beebe 做為連絡人名稱,然後指定下列三個地址。

    地址類型

    地址

    商務

    4567 Main St. Buffalo, NY

    首頁

    1234 North St. Buffalo, NY

    其他

    3456 Main St. Seattle, WA

  4. 儲存並關閉連絡人項目。

  5. 重新開啟 [Ann Beebe] 連絡人項目。

  6. 在項目功能區的 [顯示] 群組中,按一下 [Map It] 開啟 Map It 表單區域。

    Map It 表單區域隨即出現,並顯示 Local Search 網站。 [商務]、[住家] 和 [其他] 地址會出現在便條簿中。 在便條簿中,選取您要對應的地址。

後續步驟

您可以透過下列主題,進一步了解如何自訂 Outlook 應用程式的 UI:

請參閱

工作

逐步解說:匯入在 Outlook 中設計的表單區域

HOW TO:在 Outlook 增益集專案中加入表單區域

HOW TO:防止 Outlook 顯示表單區域

HOW TO:存取顯示表單區域的 Outlook 項目

概念

在執行階段存取表單區域

建立 Outlook 表單區域的方針

讓表單區域與 Outlook 訊息類別產生關聯

Outlook 表單區域中的自訂動作

其他資源

建立 Outlook 表單區域