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

本演练演示了如何创建实现 PowerPoint 自动化的自定义任务窗格。 当用户单击自定义任务窗格中的 MonthCalendar 控件时,自定义任务窗格向一张幻灯片中插入日期。

适用于: 本主题中的信息适用于 Outlook 的 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

虽然本演练具体使用的是 PowerPoint,但其中所阐释的概念同样适用于上面所列的应用程序。

本演练阐释了以下任务:

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

  • 从自定义任务窗格中实现 PowerPoint 自动化。

  • 在 PowerPoint 中显示自定义任务窗格。

注意

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 Visual Studio IDE

先决条件

你需要满足以下条件才能完成本演练:

创建外接程序项目

第一步是为 PowerPoint 创建 VSTO 外接程序项目。

创建新项目

  1. 使用 PowerPoint 外接程序项目模板创建名为 MyAddIn的 PowerPoint VSTO 外接程序项目。 有关详细信息,请参阅“如何:在 Visual Studio 中创建办公室项目。

    Visual Studio 将打开 ThisAddIn.csThisAddIn.vb 代码文件,并将 MyAddIn 项目添加到解决方案资源管理器

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

没有针对自定义任务窗格的可视化设计器,但可以设计具有所需布局的用户控件。 稍后在本演练中,你将向自定义任务窗格添加用户控件。

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

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

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

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

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

    如果 MonthCalendar 控件大于用户控件的设计图面,则调整用户控件的大小以适合 MonthCalendar 控件。

从自定义任务窗格自动执行 PowerPoint

VSTO 外接程序的作用是在活动演示文稿的第一张幻灯片中放置所选日期。 使用控件的 DateChanged 事件以在发生更改时添加所选日期。

若要从自定义任务窗格中实现 PowerPoint 自动化

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

    此时会打开 MyUserControl.csMyUserControl.vb 文件,并创建 DateChanged 事件的事件处理程序。

  2. 在文件顶部添加以下代码。 此代码为 Microsoft.Office.Core PowerPoint 命名空间创建别名。

    using Office = Microsoft.Office.Core;
    using PowerPoint = Microsoft.Office.Interop.PowerPoint;
    
  3. 将以下代码添加到 MyUserControl 类。 此代码将 Shape 对象声明为 . 的 MyUserControl一个成员。 在以下步骤中,你将使用此 形状 向活动演示文稿中的幻灯片添加文本框。

    private PowerPoint.Shape textbox;
    
  4. monthCalendar1_DateChanged 事件处理程序替换为以下代码。 此代码向活动演示文稿的第一张幻灯片中添加文本框,然后向文本框中添加当前选定的日期。 此代码将使用 Globals.ThisAddIn 对象来访问 PowerPoint 的对象模型。

    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 项目,然后单击“生成” 。 验证此项目是否已生成且未发生错误。

显示自定义任务窗格

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

若要显示自定义任务窗格

  1. 解决方案资源管理器中,展开 PowerPoint

  2. 右键单击 ThisAddIn.csThisAddIn.vb ,然后单击“查看代码”

  3. 将以下代码添加到 ThisAddIn 类。 此代码将 MyUserControlCustomTaskPane 的实例声明为 ThisAddIn 类的成员。

    private MyUserControl myUserControl1;
    private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
    
  4. ThisAddIn_Startup 事件处理程序替换为以下代码。 此代码通过将 CustomTaskPane 对象添加到 MyUserControl 集合来创建新 CustomTaskPanes 。 代码还将显示任务窗格。

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        myUserControl1 = new MyUserControl();
        myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "Calendar");
        myCustomTaskPane.Visible = true;
    }
    

测试外接程序

运行该项目时,会打开 PowerPoint,VSTO 外接程序将显示自定义任务窗格。 单击 MonthCalendar 控件以测试代码。

测试 VSTO 外接程序

  1. F5 运行项目。

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

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

    将向活动演示文稿的第一张幻灯片中添加日期。

后续步骤

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

  • 为其他应用程序在 VSTO 外接程序中创建自定义任务窗格。 有关支持自定义任务窗格的应用程序的详细信息,请参阅 自定义任务窗格

  • 创建一个用于隐藏或显示自定义任务窗格的功能区按钮。 有关详细信息,请参阅 演练:将自定义任务窗格与功能区按钮同步。

  • 为 Outlook 中打开的每封电子邮件创建自定义任务窗格。 有关详细信息,请参阅 演练:在 Outlook 中使用电子邮件显示自定义任务窗格。