7

我的 word vsto 插件中有以下ribbon.xml:

<tab id="TabLetters" getVisible="IsLettersTabVisible" label="Letters">
 <group id="LettersGroup" label="Letters">
  <toggleButton id="NewWithTemplate"
              label="New using template Controls"
              size="large"
              imageMso="FileNew"
              onAction="NewTemplated" />
  </toggleButton>
 </group>
</tab>

点击事件背后的代码如下:

public void NewTemplated(Office.IRibbonControl control, bool value)
{
  CloseDocument();

  var doc = Globals.ThisAddIn.Application.Documents.Add(Template: @"LETTER_V2.dotx", Visible: true);
  doc.Activate();

  _ribbon.ActivateTab("TabLetters");
}

我原以为这会导致一个新窗口打开我的功能区选项卡,但它仍然是可见/当前的 HOME 选项卡。如何使我的标签是可见的?

4

5 回答 5

4

您可以使用以下两种方法来设置活动选项卡:

TabLetters.RibbonUI.ActivateTab("TabLetters");或者

Globals.Ribbons.CustomRibbon.Tabs[Your tab id].RibbonUI.ActivateTab("TabLetters");
于 2013-02-05T06:39:10.530 回答
3

我找到了 excel 2007 的解决方案。

代码 :

int appVersion = Convert.ToInt32(Globals.ThisAddIn.Application.Version.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries)[0]);
if (appVersion >= 14 )            
{
    ThisRibbonCollection ribb = Globals.Ribbons;
    ribb.[Your Ribbon].ApplicationGroup.RibbonUI.ActivateTab("tab");                
}
else if(appVersion == 12)  // Specific to Office 2007 only.
{
                SendKeys.Send("%TAB%"); // use sendwait if you running it in thread.
}
于 2016-09-22T06:55:03.507 回答
1

在 Excel 2013 中,这是我需要使用的代码:

try
{
    //  Attempt to set the my VSTO ribbon bar as the active ribbon.
    string controlID = Globals.Ribbons.GetRibbon<MikesRibbon>().MikesTab.ControlId.ToString();
    this.RibbonUI.ActivateTab(controlID);
}
catch
{
}

我偶然发现的一点是如何让 ControlID 传递给ActivateTab函数。

您需要MikesRibbon.cs在 VS2013 中打开您的文件(或等效的!)。它将显示功能区的外观,FILE功能区选项卡名称旁边有一个灰色选项卡。

在此设计器屏幕中,单击功能区的选项卡(即 右侧的选项卡FILE),您的属性窗口现在显示一个ControlID值,您可以将其设置为您选择的值。

于 2015-12-15T13:03:50.390 回答
0

仅适用于所有必须支持 Office 2007 的人(如我)。这是 Office 2007 的(丑陋但有效的)解决方案:

  1. 打开办公应用
  2. 按 ALT,然后查看自定义功能区选项卡的键盘快捷键
  3. 在您的代码中,您现在可以通过SendKeys.SendWait函数发送此密钥

希望它可以帮助某人。问候,约尔格


代码:

    public void FocusMyCustomRibbonTab()
    {
        if (IsExcel2007())
        {
            Globals.Ribbons.GetRibbon<MyRibbon>().tabMyRibbonTab.KeyTip = "GGG";

            //Excel 2007: Must send "ALT" key combination to activate tab, here "GGG"
            SendKeys.Send("%");                       
            SendKeys.Send("{G}");                     
            SendKeys.Send("{G}");                     
            SendKeys.Send("{G}");                     
            SendKeys.Send("%");                       
        }
        else
        {
            //Excel 2010 or higher: Build in way to activate tab
            if (this.ribbon.RibbonUI != null)
            {
                this.ribbon.RibbonUI.ActivateTab("MY_RIBBON_TAB_NAME");
            }
        }
    }

    public static bool IsExcel2007()
    {
        return (Globals.ThisAddIn.Application.Version.StartsWith("12"));
    }
于 2013-12-27T10:51:13.113 回答
0

在 Word 2016 中,使用 RibbonUI.ActivateTabMso(controlID) 激活常规 Word 功能区选项卡。

此外,您可以通过添加您的插件来获得对功能区的正确引用:

static internal Microsoft.Office.Tools.Ribbon.OfficeRibbon rUI = null;


private void WorkBenchRibbon_Load(object sender, Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs e)
    {
        rUI = ((Microsoft.Office.Tools.Ribbon.OfficeRibbon)sender).Ribbon;
    }
于 2017-10-12T07:56:30.250 回答