演练:设计 Outlook 窗体区域
自定义窗体区域扩展标准或自定义 Microsoft Office Outlook 窗体。 在本演练中,你将设计作为新页出现在联系人项目的检查器窗口中的自定义窗体区域。 通过将地址信息发送到 Windows Live 本地搜索网站,此窗体区域将显示为联系人列出的每个地址的映射。 有关窗体区域的信息,请参阅 “创建 Outlook 窗体区域”。
适用于: 本主题中的信息适用于 Outlook 的 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
本演练阐释了以下任务:
创建新的 Outlook VSTO 外接程序项目。
将窗体区域添加到 VSTO 外接程序项目。
设计窗体区域的布局。
自定义窗体区域的行为。
测试 Outlook 窗体区域。
注意
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 Visual Studio IDE。
先决条件
你需要满足以下条件才能完成本演练:
Visual Studio 的一个版本,其中包含 Microsoft Office 开发人员工具。 有关详细信息,请参阅配置计算机以开发办公室解决方案。
Outlook 2010 或更高版本。
有关本主题的视频版本,请参阅 视频操作说明:设计 Outlook 窗体区域。
创建新的 Outlook VSTO 外接程序项目
首先创建基本的 VSTO 外接程序项目。
创建新的 Outlook VSTO 外接程序项目
在 Visual Studio 中,创建名为 MapItAddIn 的 Outlook VSTO 外接程序项目。
在 “新建项目” 对话框中,选择 “创建解决方案的目录”。
将项目保存到任一目录。
有关详细信息,请参阅“如何:在 Visual Studio 中创建办公室项目。
将窗体区域添加到 Outlook VSTO 外接程序项目
Outlook VSTO 外接程序解决方案可包含一个或多个 Outlook 窗体区域项。 使用 “新建 Outlook 窗体区域 ”向导将窗体区域项添加到项目。
向 Outlook VSTO 外接程序项目添加窗体区域
在解决方案资源管理器中,选择 MapItAddIn 项目。
在 “项目” 菜单上,单击 “添加新项”。
在 “添加新项 ”对话框中,选择 Outlook 窗体区域,将文件 命名为 MapIt,然后单击“ 添加”。
NewOutlook 窗体区域向导将启动。
在 “选择要如何创建窗体区域 ”页上,单击“ 设计新窗体区域”,然后单击“ 下一步”。
在“选择要创建窗体区域的类型”页上,单击“分隔”,然后单击“下一步”。
单独的窗体区域向 Outlook 窗体添加新页面。 有关窗体区域类型的详细信息,请参阅 创建 Outlook 窗体区域。
在“提供描述性文本”并选择显示首选项页上,在“名称”框中键入“映射它”。
打开联系人项目时,此名称将显示在检查器窗口的功能区中。
选择 处于撰写模式 的 检查器和处于读取模式的检查器,然后单击“ 下一步”。
在 “标识”将显示此窗体区域 页的邮件类中,清除 邮件,选择“ 联系人”,然后单击“ 完成”。
MapIt.cs 或 MapIt.vb 文件将添加到项目中。
设计窗体区域的布局
使用 窗体区域设计器直观地开发窗体区域。 可将托管的控件拖到窗体区域设计器图面。 使用设计器和 “属性” 窗口调整控件布局和外观。
设计窗体区域的布局
在解决方案资源管理器中,展开 MapItAddIn 项目,然后双击 MapIt.cs 或 MapIt.vb 打开窗体区域设计器。
右键单击设计器,然后单击“ 属性”。
在“属性”窗口中,将“大小”设置为 664、469。
这可确保窗体区域的大小足以显示映射。
在“视图”菜单上,单击“工具箱”。
在工具箱的“常见控件”选项卡中,将 WebBrowser 添加到窗体区域。
WebBrowser 将显示联系人列出的每个地址的地图。
自定义窗体区域的行为
将代码添加到窗体区域事件处理程序,从而自定义窗体区域在运行时的行为方式。 对于此窗体区域而言,代码将检查 Outlook 项的属性,并确定是否显示 Map It 窗体区域。 如果它显示该窗体区域,代码将导航到 Windows Live 本地搜索并加载 Outlook 联系人项目中列出的每个地址的映射。
自定义窗体区域的行为
在解决方案资源管理器中,右键单击 MapIt.cs 或 MapIt.vb,然后单击“查看代码”。
MapIt.cs 或 MapIt.vb 将在代码编辑器中打开。
展开“窗体区域工厂代码”区域。
将公开名为
MapItFactory
的窗体区域工厂类。将以下代码添加到
MapItFactory_FormRegionInitializing
事件处理程序中。 将在用户打开联系人项目时调用此事件处理程序。 下面的代码确定联系人项目是否包含地址。 如果联系人项目不包含地址,则此代码将 Cancel 类的属性 FormRegionInitializingEventArgs 设置为 true ,并且不会显示窗体区域。 否则,VSTO 外接程序将引发 FormRegionShowing 事件,并显示窗体区域。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 字符串作为参数传递。
本地搜索网站将在 Map It 窗体区域中出现,并在便笺本中显示每个地址。
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 的“开始”选项卡上,单击“新建项目”,然后单击“联系人”。
在联系人窗体中,键入 Ann Beebe 作为联系人姓名,然后指定以下三个地址。
地址类型 地址 营业 4567 主街布法罗, 纽约 主页 1234 北圣布法罗, 纽约 其他 3456 Main St. Seattle, WA 保存并关闭联系人项目。
重新打开 Ann Beebe 联系人项。
在 Outlook 中,可以通过打开联系人通讯簿或在搜索人员中键入 Ann Beebe,在“查找”组中完成此操作。
在 项目功能区的“显示 ”组中,单击“映射它” 以打开“映射它 ”窗体区域。
Map It 窗体区域出现,并显示本地搜索网站。 业务、家庭和其他地址显示在暂存板中。 在便笺本中,选择需映射的地址。
后续步骤
可从以下主题了解有关如何自定义 Outlook 应用程序 UI 的详细信息:
- 若要了解如何自定义 Outlook 项目的功能区,请参阅 “自定义 Outlook 功能区”。