我的单词vsto add-in中有以下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选项卡。如何让我的标签显示出来?
答案 0 :(得分:4)
您可以使用以下两种方法设置活动标签:
TabLetters.RibbonUI.ActivateTab("TabLetters");
或
Globals.Ribbons.CustomRibbon.Tabs[Your tab id].RibbonUI.ActivateTab("TabLetters");
答案 1 :(得分: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.
}
答案 2 :(得分: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
函数。
您需要在VS2013中打开MikesRibbon.cs
文件(或同等文件!)。它将显示您的功能区的外观,并在功能区选项卡名称旁边显示灰色的FILE
选项卡。
在此Designer屏幕中,单击功能区的选项卡(即FILE
右侧的选项卡),然后您的属性窗口将显示ControlID
值,您可以设置为您选择的值。
答案 3 :(得分:0)
仅适用于所有必须支持Office 2007的人(像我一样)。这是Office 2007的一个(丑陋,但有效)解决方案:
希望它有所帮助。此致,Jörg
代码:
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"));
}
答案 4 :(得分:0)
在Word 2016中,使用RibbonUI.ActivateTabMso(controlID)激活常规Word功能区选项卡。
此外,您可以通过添加AddIn:
来获得对功能区的正确引用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;
}