是否可以将一个内置在RibbonButton中的excel 2010设置为从excel VSTO加载项启用= false?
我尝试了以下内容:
CommandBarControls controlls=Globals.ThisAddIn.Application.CommandBars.FindControls(MsoControlType.msoControlButton, 7374, null, false);
/// 7374 is the office control id of the control I want to access
foreach (CommandBarControl control in controlls)
{
control.Enabled = false;
}
但这似乎仅适用于右键单击上下文菜单。而不是功能区按钮。
答案 0 :(得分:4)
除非使用startFromScratch
功能区UI属性,否则只能禁用选项卡而不是控件。 See MSDN for reference
另请参阅Ribbon XML FAQ以获取有关Excel功能区操作的良好资源。
答案 1 :(得分:2)
不确定这是否对您有所帮助,但对于自定义功能区,您使用功能区XML实现getEnabled
回调。
在XML中:
<button id="btnMyButton" ... getEnabled="OnMyButton_GetEnabled" onAction="..."/>
在代码隐藏中:
public bool OnMyButton_GetEnabled(Office.IRibbonControl rControl)
{
// return true or false to enable or disable
}
如果需要强制调用这些回调,则需要调用IRibbonUI.Invalidate()
方法(例如,当由于某些其他事件而设置启用/禁用状态变量时)。
顺便说一句,Ribbon Designer界面(在VS 2010上)似乎无法实现getEnabled
回调。