逐步解說:設計 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 增益集專案
在 Visual Studio 中,建立名稱為 MapItAddIn 的 Outlook 增益集專案。
選取 [新增專案] 對話方塊中的 [為方案建立目錄]。
將專案儲存至任何目錄。
如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案。
將表單區域加入至 Outlook 增益集專案
一個 Outlook 增益集方案可包含一個或多個 Outlook 表單區域項目。 請使用 [新的 Outlook 表單區域] 精靈,將表單區域項目加入至專案。
若要將表單區域加入至 Outlook 增益集專案
選取 [方案總管] 中的 [MapItAddIn] 專案。
按一下 [專案] 功能表上的 [加入新項目]。
在 [加入新項目] 對話方塊中,選取 [Outlook 表單區域] 並將檔案命名為 MapIt,然後按一下 [加入]。
[新的 Outlook 表單區域] 精靈隨即啟動。
按一下 [選取您希望如何建立此表單區域] 頁面上的 [設計新的表單區域],然後按 [下一步]。
按一下 [選取您要建立的表單區域類型] 頁面上的 [獨立型],然後按 [下一步]。
「獨立型」(Separate) 表單區域會將新的頁面加入至 Outlook 表單中。 如需表單區域類型的詳細資訊,請參閱建立 Outlook 表單區域。
在 [提供描述文字和選取顯示設定] 頁面上的 [名稱] 方塊中,輸入 Map It。
這個名稱會在連絡人項目開啟時,出現在 [偵測器] 視窗的功能區上。
選取 [處於撰寫模式的偵測器] 和 [處於讀取模式的偵測器],然後按 [下一步]。
清除 [識別將顯示此表單區域的訊息類別] 頁面上的 [郵件],選取 [連絡人],然後按一下 [完成]。
MapIt.cs 或 MapIt.vb 檔案就會加入至專案中。
設計表單區域的版面配置
使用「表單區域設計工具」(Form Region Designer),以視覺化方式開發表單區域。 您可以將 Managed 控制項拖放至表單區域設計工具介面。 使用設計工具和 [屬性] 視窗來調整控制項的配置和外觀。
若要設計表單區域的配置
在 [方案總管] 中,展開 [MapItAddIn] 專案,然後按兩下 MapIt.cs 或 MapIt.vb 來開啟表單區域設計工具。
以滑鼠右鍵按一下設計工具,然後按一下 [屬性]。
在 [屬性] 視窗中,將 [Size] 設定為 664, 469。
這樣可確保表單區域的大小足以顯示地圖。
在 [檢視] 功能表上,按一下 [工具箱]。
從 [工具箱] 的 [通用控制項] 索引標籤,將 [WebBrowser] 加入至表單區域。
[WebBrowser] 將針對列出的每個連絡人地址顯示其地圖。
自訂表單區域的行為
將程式碼加入至表單區域事件處理常式,以自訂表單區域在執行階段的行為。 程式碼會針對此表單區域檢查 Outlook 項目屬性,並判斷是否要顯示 Map It 表單區域。 如果它顯示了表單區域,則程式碼會巡覽至 Windows Live Local Search 並針對列在 Outlook 連絡人項目中的每筆地址載入其地圖。
若要自訂表單區域的行為
以滑鼠右鍵按一下 [方案總管] 中的 MapIt.cs 或 MapIt.vb,然後按一下 [檢視程式碼]。
MapIt.cs 或 MapIt.vb 隨即在 [程式碼編輯器] 中開啟。
展開 [表單區域 Factory] 程式碼區域。
名為 MapItFactory 的表單區域 Factory 類別隨即出現。
將下列程式碼加入至 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; }
將下列程式碼加入至 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 表單區域
按 F5 執行專案。
Outlook 隨即開啟。
在 Outlook 中,執行下列其中一項工作以建立連絡人:
在 Outlook 2010 中,按一下 [首頁] 索引標籤上的 [新增項目],然後按一下 [連絡人]。
在 Outlook 2007 中,於 [檔案] 功能表上指向 [新增],然後按一下 [連絡人]。
在連絡人表單中,輸入 Ann Beebe 做為連絡人名稱,然後指定下列三個地址。
地址類型
地址
商務
4567 Main St. Buffalo, NY
首頁
1234 North St. Buffalo, NY
其他
3456 Main St. Seattle, WA
儲存並關閉連絡人項目。
重新開啟 [Ann Beebe] 連絡人項目。
在項目功能區的 [顯示] 群組中,按一下 [Map It] 開啟 Map It 表單區域。
Map It 表單區域隨即出現,並顯示 Local Search 網站。 [商務]、[住家] 和 [其他] 地址會出現在便條簿中。 在便條簿中,選取您要對應的地址。
後續步驟
您可以透過下列主題,進一步了解如何自訂 Outlook 應用程式的 UI:
- 若要深入了解如何自訂 Outlook 項目的功能區,請參閱自訂 Outlook 的功能區。