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

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

这是VS2010 Office 2010加载项。我想要的只是向多个内置选项卡添加一个按钮(或按钮组)。例如,我的按钮应该同时在"新邮件消息"功能区和"新date"功能区中可用。我尝试添加一个新选项卡(在Visual Designer中),但这似乎不起作用。该按钮组显示在"新邮件"选项卡上,而不显示在"date"选项卡上。顺便说一句,我正在使用以下ID:TabNewMailMessageTabAppointment


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


指定答案现在已过时!

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

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

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


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

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

    XML:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <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#:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public void ButtonOnAction(IRibbonControl control)
        {
            switch (control.Id)
            {
                case"myButton1":
                case"myButton2":
                    // do something
                    Console.Out.WriteLine("Button ID: {0}", control.Id);
                    break;
            }
        }