更新:2007 年 11 月
| 适用对象 | 
|---|
| 本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 应用程序。 项目类型 
 Microsoft Office 应用程序 
 有关更多信息,请参见按应用程序和项目类型提供的功能。 | 
此演练演示如何创建一个实现 PowerPoint 自动化的自定义任务窗格。用户单击自定义任务窗格上的 MonthCalendar 控件时,自定义任务窗格会将日期插入幻灯片中。
尽管此演练专门使用 PowerPoint,但该演练演示的概念适用于上面列出的任何应用程序。
本演练阐释以下任务:
- 设计自定义任务窗格的用户界面。 
- 通过自定义任务窗格实现 PowerPoint 自动化。 
- 在 PowerPoint 中显示自定义任务窗格。 
| .gif) 说明: | 
|---|
| 以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置。 | 
先决条件
您需要以下组件来完成本演练:
- Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。 
- Microsoft Office PowerPoint 2007。 
默认情况下,Visual Studio Tools for Office 随列出的 Visual Studio 版本一起安装。若要检查它是否已安装,请参见安装 Visual Studio Tools for Office。
创建外接程序项目
第一步是针对 PowerPoint 创建一个外接程序项目。
创建新项目
- 使用适用于 2007 Microsoft Office system 的 PowerPoint 外接程序项目模板创建一个名为“MyAddIn”的 PowerPoint 外接程序项目。有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目。 - Visual Studio 将打开 ThisAddIn.cs 或 ThisAddIn.vb 代码文件,并将“MyAddIn”项目添加到“解决方案资源管理器”中。 
设计自定义任务窗格的用户界面。
自定义任务窗格没有可视化设计器,但您可以设计具有所需布局的用户控件。在本演练后面的部分中,您将把此用户控件添加到自定义任务窗格。
设计自定义任务窗格的用户界面
- 在“项目”菜单上单击“添加用户控件”。 
- 在“添加新项”对话框中,将用户控件的名称更改为 MyUserControl,然后单击“添加”。 - 该用户控件即在设计器中打开。 
- 从“工具箱”的“公共控件”选项卡中,将“MonthCalendar”控件拖动到用户控件中。 - 如果“MonthCalendar”控件比用户控件的设计图面大,请调整用户控件大小以适合“MonthCalendar”控件。 
通过自定义任务窗格实现 PowerPoint 自动化
该外接程序的用途是将选择的日期放在活动演示文稿的第一张幻灯片上。使用该控件的 DateChanged 事件在日期更改时添加选择的日期。
从自定义任务窗格自动化 PowerPoint
- 在设计器中,双击 MonthCalendar 控件。 - MyUserControl.cs 或 MyUserControl.vb 文件将打开,并为 DateChanged 事件创建一个事件处理程序。 
- 将下面的代码添加到文件的顶部。此代码为 Microsoft.Office.Core 和 Microsoft.Office.Interop.PowerPoint 命名空间创建别名。 - Imports Office = Microsoft.Office.Core Imports PowerPoint = Microsoft.Office.Interop.PowerPoint- using Office = Microsoft.Office.Core; using PowerPoint = Microsoft.Office.Interop.PowerPoint;
- 向 MyUserControl 类中添加下面的代码。此代码将 Microsoft.Office.Interop.PowerPoint.Shape 的一个实例声明为 MyUserControl 的成员。在接下来的步骤中,您将使用此 Microsoft.Office.Interop.PowerPoint.Shape 将一个文本框添加到活动演示文稿中的幻灯片。 - Private TextBox As PowerPoint.Shape- private PowerPoint.Shape textbox;
- 用下面的代码替换 monthCalendar1_DateChanged 事件处理程序。此代码将一个文本框添加到活动演示文稿的第一张幻灯片中,然后将当前选择的日期添加到该文本框中。此代码使用 Globals.ThisAddIn 对象访问 PowerPoint 的对象模型。 - Private Sub MonthCalendar1_DateChanged( _ ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DateRangeEventArgs) _ Handles MonthCalendar1.DateChanged Try If TextBox IsNot Nothing Then TextBox.Delete() End If Dim Slide As PowerPoint.Slide Slide = Globals.ThisAddIn.Application.ActivePresentation.Slides(1) TextBox = Slide.Shapes.AddTextbox( _ Office.MsoTextOrientation.msoTextOrientationHorizontal, _ 50, 100, 600, 50) TextBox.TextFrame.TextRange.Text = e.Start.ToLongDateString() TextBox.TextFrame.TextRange.Font.Size = 48 TextBox.TextFrame.TextRange.Font.Color.RGB = _ System.Drawing.Color.DarkViolet.ToArgb() Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString()) End Try End Sub- private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) { try { if (textbox != null) { textbox.Delete(); } PowerPoint.Slide slide = Globals.ThisAddIn.Application.ActivePresentation.Slides[1]; textbox = slide.Shapes.AddTextbox( Office.MsoTextOrientation.msoTextOrientationHorizontal, 50, 100, 600, 50); textbox.TextFrame.TextRange.Text = e.Start.ToLongDateString(); textbox.TextFrame.TextRange.Font.Size = 48; textbox.TextFrame.TextRange.Font.Color.RGB = Color.DarkViolet.ToArgb(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
- 在“解决方案资源管理器”中,右击“MyAddIn”项目并单击“生成”。验证项目已生成且未发生错误。 
显示自定义任务窗格
若要在外接程序启动时显示自定义任务窗格,请在外接程序的 Startup 事件处理程序中将用户控件添加到任务窗格。
显示自定义任务窗格
- 在“解决方案资源管理器”中展开“PowerPoint”。 
- 右击“ThisAddIn.cs”或“ThisAddIn.vb”,然后单击“查看代码”。 
- 向 ThisAddIn 类中添加下面的代码。此代码将 MyUserControl 和 CustomTaskPane 的实例声明为 ThisAddIn 类的成员。 - Private myUserControl1 As MyUserControl Private myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane- private MyUserControl myUserControl1; private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
- 用下面的代码替换 ThisAddIn_Startup 事件处理程序。此代码通过向 CustomTaskPanes 集合添加 MyUserControl 对象来创建一个新 CustomTaskPane。该代码还显示任务窗格。 - Private Sub ThisAddIn_Startup(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Startup myUserControl1 = New MyUserControl myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "Calendar") myCustomTaskPane.Visible = True End Sub- private void ThisAddIn_Startup(object sender, System.EventArgs e) { myUserControl1 = new MyUserControl(); myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "Calendar"); myCustomTaskPane.Visible = true; }
测试外接程序
当您运行项目时,PowerPoint 将打开,并且外接程序将显示自定义任务窗格。单击 MonthCalendar 控件测试代码。
测试外接程序
- 按 F5 运行项目。 
- 确认自定义任务窗格可见。 
- 单击任务窗格上 MonthCalendar 控件中的日期。 - 该日期将插入到活动演示文稿的第一张幻灯片中。 
后续步骤
可从以下主题中了解有关如何创建自定义任务窗格的更多信息:
- 在 2007 Microsoft Office system 的不同应用程序的外接程序中创建自定义任务窗格。有关支持自定义任务窗格的应用程序的更多信息,请参见 自定义任务窗格概述。 
- 创建一个可用于隐藏或显示自定义任务窗格的功能区按钮。有关更多信息,请参见演练:将自定义任务窗格与功能区按钮同步。 
- 为 Outlook 中打开的所有电子邮件创建一个自定义任务窗格。有关更多信息,请参见 演练:为 Outlook 中的电子邮件显示自定义任务窗格。