如何将组添加到多个内置功能区选项卡(vsto)?

时间:2012-09-25 10:13:23

标签: c# outlook vsto ribbon outlook-addin

这是VS2010 + Office 2010加载项。我想要的只是在多个内置选项卡中添加一个按钮(或按钮组)。例如,我的按钮应该在新邮件功能区新约会功能区中可用。我尝试添加一个新选项卡(可视设计器中的 ),但这似乎不起作用。按钮组显示在“新邮件”选项卡上,但不显示在“约会”选项卡上。顺便说一句,我使用以下ID:TabNewMailMessageTabAppointment

4 个答案:

答案 0 :(得分:4)

对于其他人来说,我唯一可以在Appointment和New Mail Message选项卡上看到我的组的方法是为每个内置选项卡添加一个Ribbon,然后复制/粘贴所有从一个功能区到另一个功能区的UI和代码。确保为每个内置选项卡选择适当的RibbonType(功能区的属性)。

答案 1 :(得分:1)

指定答案现在已过时!

  1. 在OfficeRibbon对象上,根据需要设置多个RibbonType(例如Microsoft.Outlook.Explorer和Microsoft.Outlook.Mail.Read)。
  2. 添加第一个Tab并设置ControlId.OfficeId(例如TabMail)
  3. 添加另一个选项卡并设置ControlId.OfficeId(例如TabReadMessage)
  4. 在每个选项卡中添加一个组和一个按钮,并将Button.Click事件设置为指向相同的OnClick方法

答案 2 :(得分:0)

我没有Outlook,但我在Word / Excel / PPT中使用了以下内容,所以我希望它也能在Outlook中运行(未经测试!)。

尝试添加功能区(XML)项,然后使用看起来相同的按钮添加两个选项卡,并使用不同的ID调用相同的代码。

XML:

<tab idMso="TabNewMailMessage">
    <group id="MyGroup1" label="My Group1">
        <button id="myButton1" label="Button 1" size="large"  onAction="ButtonOnAction" />
    </group>
</tab>
<tab idMso="TabAppointment">
    <group id="MyGroup2" label="My Group2">
        <button id="myButton2" label="Button 2" size="large"  onAction="ButtonOnAction" />
    </group>
</tab>

C#:

    public void ButtonOnAction(IRibbonControl control)
    {
        switch (control.Id)
        {
            case "myButton1":
            case "myButton2":
                // do something
                Console.Out.WriteLine("Button ID: {0}", control.Id);
                break;
        }
    }

答案 3 :(得分:0)

与上面的答案类似但不使用XML,您可以让该组在两个不同的位置添加第二个标签。

在功能区设计器中,向功能区添加第二个选项卡,并将ControlID更改为您要查看组的第二个位置。然后右键单击原始选项卡中的组,然后单击“复制”。单击返回新选项卡并将组粘贴到那里。它将复制组中已有的任何内容。但是,您必须重新添加事件。但对我来说,我只是重新使用已经创建的事件,它完美地运行。欢呼声。