在Excel 2013中动态禁用/启用自定义上下文菜单

时间:2013-11-18 21:49:58

标签: c# excel vsto contextmenu excel-addins

我有一个Excel AddIn。我在单元格的上下文菜单中添加了2个上下文菜单项。

右键单击一个单元格时,根据单元格的公式,将禁用一个上下文菜单项。

我在sheetSelectionChangeEvent

中添加了此代码

这在Excel 2003,2007和2010中运行良好,但在Excel 2013中不起作用。

以下是代码:

 private void ApplicationSheetSelectionChange(COMObject sh, Range target)
 {
     DisableMenubarsButtonsWRibbon(XLApp.Selection as Range);
 }

 public void DisableMenubarsButtonsWRibbon(Range rng)
 {
     var formula = rng.Formula as string;
     if(formula is function1)
     {
         _contextMenuItem1.Enabled = true;
         _contextMenuItem2.Enabled = false;
     }
     else if(formula is function2)
     {
         _contextMenuItem1.Enabled = false;
         _contextMenuItem2.Enabled = true;
     }
     else
     {
         _contextMenuItem1.Enabled = true;
         _contextMenuItem2.Enabled = true;
     }
 }

1 个答案:

答案 0 :(得分:1)

您报告的行为原因:

您报告的行为归因于MS Excel 2013核心的bug

行为不是由于用于创建 Excel加载项的libriaries / toolskits所致:

  • 当您报告VSTO 2010ExcelDNA
  • 的问题时,NetOffice遇到同样的问题
  • 在这两种情况下,启用上下文菜单项都能很好地与Office 2010配合使用,并停止使用Office 2013。

我已经在MS Connect上提交了 Visual Studio .NET Framework 区域的缺陷,因为我还没有找到他们接受 Office错误的位置

MS Connect 一样,有时会出现缺陷链接 - 我将在此答案的最后添加屏幕截图的详细信息。

解决方法 - 启用禁用菜单项

正如在your question on MSDN Social论坛的回答中所述 - 当您按EnabledCaption属性检索项目时,您可以控制Tag上下文菜单项的状态:< / p>

CommandBar contextMenu = Globals.ThisAddIn.Application.CommandBars["Cell"];
foreach (CommandBarControl control in contextMenu.Controls)
{
    if (control.Caption == "item caption") // Specify here caption of your context menu item
    {
        contextMenuItem = (CommandBarButton)control;
        contextMenuItem.Enabled = true; // Specify here desired value for Enabled state to be set
    }
}

在上面的代码中,Caption找到了剪切上下文菜单项 - 通过Tag替换代码找到项目:

    control.Caption == "item caption"

if条件中:

    control.Tag == "item tag"

指定正确的值而不是item tag文本

缺陷详情

MS Connect ticket ID 813453和标题:

  

对于使用C#.NET和Visual Studio 2012创建的Excel 2013加载项的上下文菜单项,启用状态不会更改

以下是门票的截图: 813453 Page 1 813453 Page 2 813453 Page 3 813453 Page 4