繁体   English   中英

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

[英]How to add a group to multiple built-in Ribbon tabs (vsto)?

这是 VS2010 + Office 2010 插件。 我想要的只是向多个内置选项卡添加一个按钮(或按钮组)。 例如,我的按钮应该在New Mail Message RibbonNew Appointment Ribbon中都可用。 我尝试添加一个新选项卡(在 Visual Designer 中),但这似乎不起作用。 按钮组出现在“新邮件”选项卡上,但不会出现在“约会”选项卡上。 顺便说一句,我正在使用以下 ID: TabNewMailMessageTabAppointment

对于其他人来说,我能够在约会和新邮件消息选项卡上看到我的组的唯一方法是为每个内置选项卡添加一个功能区,然后复制/粘贴所有 UI 和代码从一个功能区到另一个。 确保为每个内置选项卡选择正确的 RibbonType(功能区的属性)。

指定的答案现已过时!

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

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

尝试添加一个 Ribbon (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;
        }
    }

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

在功能区设计器中,将第二个选项卡添加到功能区并将 ControlID 更改为您希望看到您的组的第二个位置。 然后右键单击原始选项卡中的组并单击复制。 单击返回到新选项卡并将组粘贴到那里。 它将复制组中已有的任何内容。 但是,您将不得不重新添加事件。但对我而言,我只是重新使用了已经创建的事件,并且效果很好。 干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM