演练:从自定义任务窗格自动化应用程序

此演练演示如何创建一个实现 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”项目添加到“解决方案资源管理器”**中。

设计自定义任务窗格的用户界面。

自定义任务窗格没有可视化设计器,但您可以设计具有所需布局的用户控件。 在本演练后面的部分中,您将把此用户控件添加到自定义任务窗格。

设计自定义任务窗格的用户界面

  1. 在**“项目”菜单上,单击“添加用户控件”**。

  2. 在**“添加新项”对话框中,将用户控件的名称更改为 MyUserControl,然后单击“添加”**。

    该用户控件即在设计器中打开。

  3. 从**“工具箱”“公共控件”选项卡中,将“MonthCalendar”**控件拖动到用户控件中。

    如果**“MonthCalendar”控件比用户控件的设计图面大,请调整用户控件大小以适合“MonthCalendar”**控件。

通过自定义任务窗格实现 PowerPoint 自动化

该外接程序的用途是将选择的日期放在活动演示文稿的第一张幻灯片上。 使用该控件的 DateChanged 事件在日期更改时添加选择的日期。

从自定义任务窗格自动化 PowerPoint

  1. 在设计器中,双击 MonthCalendar 控件。

    MyUserControl.cs 或 MyUserControl.vb 文件将打开,并为 DateChanged 事件创建一个事件处理程序。

  2. 将下面的代码添加到文件的顶部。 此代码为 Microsoft.Office.CoreMicrosoft.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;
    
  3. 向 MyUserControl 类添加下面的代码。 此代码将 Shape 对象声明为 MyUserControl 的成员。 在接下来的步骤中,您将使用此 Shape 将一个文本框添加到活动演示文稿中的幻灯片。

    Private TextBox As PowerPoint.Shape
    
    private PowerPoint.Shape textbox;
    
  4. 用下面的代码替换 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());
        }
    }
    
  5. 在**“解决方案资源管理器”中,右击“MyAddIn”项目并单击“生成”**。 验证项目已生成且未发生错误。

显示自定义任务窗格

若要在外接程序启动时显示自定义任务窗格,请在外接程序的 Startup 事件处理程序中将用户控件添加到任务窗格。

显示自定义任务窗格

  1. 在**“解决方案资源管理器”中展开“PowerPoint”**。

  2. 右击**“ThisAddIn.cs”“ThisAddIn.vb”,然后单击“查看代码”**。

  3. 向 ThisAddIn 类中添加下面的代码。 此代码将 MyUserControl 和 CustomTaskPane 的实例声明为 ThisAddIn 类的成员。

    Private myUserControl1 As MyUserControl
    Private myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
    
    private MyUserControl myUserControl1;
    private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
    
  4. 用下面的代码替换 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 控件测试代码。

测试外接程序

  1. 按 F5 运行项目。

  2. 确认自定义任务窗格可见。

  3. 单击任务窗格上 MonthCalendar 控件中的日期。

    该日期将插入到活动演示文稿的第一张幻灯片中。

后续步骤

可从以下主题中了解有关如何创建自定义任务窗格的更多信息:

请参见

任务

如何:向应用程序中添加自定义任务窗格

演练:将自定义任务窗格与功能区按钮同步

演练:为 Outlook 中的电子邮件显示自定义任务窗格

如何:为 Outlook 中的电子邮件显示自定义任务窗格

概念

在多个应用程序窗口中管理自定义任务窗格

其他资源

自定义任务窗格概述