演练:从自定义任务窗格自动化应用程序
此演练演示如何创建一个实现 PowerPoint 自动化的自定义任务窗格。 用户单击自定义任务窗格上的 MonthCalendar 控件时,自定义任务窗格会将日期插入幻灯片中。
**适用于:**本主题中的信息适用于以下应用程序的应用程序级项目:Excel 2007 和 Excel 2010;InfoPath 2007 和 InfoPath 2010;Outlook 2007 和 Outlook 2010;PowerPoint 2007 和 PowerPoint 2010;Word 2007 和 Word 2010。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
尽管此演练专门使用 PowerPoint,但该演练演示的概念适用于上面列出的任何应用程序。
本演练阐释了以下任务:
设计自定义任务窗格的用户界面。
通过自定义任务窗格实现 PowerPoint 自动化。
在 PowerPoint 中显示自定义任务窗格。
提示
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 您安装的 Visual Studio 版本以及使用的设置决定了这些元素。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
-
Visual Studio 2010 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.100\).md)。
- Microsoft Office PowerPoint 2007 或 Microsoft PowerPoint 2010。
创建外接程序项目
第一步是针对 PowerPoint 创建一个外接程序项目。
创建新项目
使用 PowerPoint 外接程序项目模板,创建一个名为“MyAddIn”的 PowerPoint 外接程序项目。 有关更多信息,请参见如何:在 Visual Studio 中创建 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 类添加下面的代码。 此代码将 Shape 对象声明为 MyUserControl 的成员。 在接下来的步骤中,您将使用此 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 控件中的日期。
该日期将插入到活动演示文稿的第一张幻灯片中。
后续步骤
可从以下主题中了解有关如何创建自定义任务窗格的更多信息:
在适用于其他应用程序的外接程序中创建自定义任务窗格。 有关支持自定义任务窗格的应用程序的更多信息,请参见 自定义任务窗格概述。
创建一个可用于隐藏或显示自定义任务窗格的功能区按钮。 有关更多信息,请参见演练:将自定义任务窗格与功能区按钮同步。
为 Outlook 中打开的所有电子邮件创建一个自定义任务窗格。 有关更多信息,请参见 演练:为 Outlook 中的电子邮件显示自定义任务窗格。