Excel VSTO - 在单元格编辑期间禁用RibbonButton

时间:2010-12-09 16:47:58

标签: excel vsto

我正在编写Excel加入项,并希望在用户单击(编辑)单元格时禁用我的功能区按钮。我发现这种情况发生在Excel和TFS Excel中的其他功能区按钮中,因此我希望其他开发人员可以通过某种方式实现它。是否有某种方法来确定/处理编辑开始/结束的时间(即通过双击/点击进入/击中逃脱)?

我以为我可以在这些活动期间手动启用/禁用按钮。我想知道这里描述的技术http://www.codeproject.com/KB/office/Excel_Edit_Mode.aspx是否是检测当前是否正在编辑单元格的最佳方法?

非常感谢任何指导。

由于

2 个答案:

答案 0 :(得分:2)

以下是我为实现与您一样的目标所做的工作。

我创建了一个500毫秒的定时器 在Timer的事件处理程序中,我执行以下检查

if (Globals.ThisAddIn.Application.Ready)
{
     SetRibbonState()
}

SetRibbonState是这样的:

private void SetRibbonState()
{ 
     if (IsEditing())
     {
          buttonRefresh.Enabled = false;
     }
     else
     {
          buttonRefresh.Enabled = true;
     }
}

public static bool IsEditing()
{
    return !Globals.ThisAddIn.Application.CommandBars.GetEnabledMso(FileNewDefaultIdMso);
}

答案 1 :(得分:2)

对不起,迟到了。我刚刚遇到了你的问题。

我想在我的项目中采用相同的行为,并且我成功地整合了这个解决方案:

http://www.codeproject.com/KB/office/ExcelInEditMode.aspx

这是无痛的,而且效果很好。我刚刚在我的项目中添加了该类,创建了它的实例并将事件附加到EditModeOff和EditModeOn事件。

希望有帮助(你或其他人)