c# - 一段时间后 ContextMenu Excel 365 操作丢失 c#

标签 c# excel

前段时间我在用 C# 编写的 excel 功能区插件中创建了一个上下文菜单 (CommandBarButton)。我注意到由于某种原因,在 excel 中工作了一段时间后,按钮背后的功能丢失了。在插件初始化后,按钮被添加到上下文菜单中,它就像一个魅力一样工作,但是在 Excel 工作表中忙碌之后,当我点击它时,事件背后的功能不再被调用。

我尝试了很多不同的方法,例如在我的插件中的每个操作后删除和添加事件,但问题仍然存在。

编辑:我发现功能区中复制工作表的按钮(至少是其中一种情况)导致事件处理程序无法运行。我使用 Excel.Worksheet.Copy() 复制我的工作表,同时激活一个过滤器使事件处理程序无法运行。

也许由于某种原因事件监听器被某个进程删除了?

        Microsoft.Office.Core.CommandBarButton ContextMenuCompanyButton;
        ContextMenuCompanyButton = (Microsoft.Office.Core.CommandBarButton)Globals.ThisAddIn.Application.CommandBars["Cell"].Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Type.Missing, Type.Missing, 1, false);
        ContextMenuCompanyButton.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption;
        ContextMenuCompanyButton.Caption = "Companies";
        ContextMenuCompanyButton.Tag = "Companies";
        ContextMenuCompanyButton.Visible = true;
        ContextMenuCompanyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(CommandBarCompanyButton_Click);

有人知道这个问题吗,我不知道去哪里找。也许有一些内部进程清除了这些事件?

最佳答案

我终于修好了!

我在问题中发布的第一行代码:

Microsoft.Office.Core.CommandBarButton ContextMenuCompanyButton;

我作为类变量移动到类的头部。

关于c# - 一段时间后 ContextMenu Excel 365 操作丢失 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49942042/

相关文章:

c# - 网站目录外的引用文件

c# - Dynamics CRM/Dynamics 365 以编程方式应用解决方案升级

vba - 表单内的自定义 VBA 用户表单热键

c# - asp.net mvc验证问题

c# - 我如何为 json 属性返回 null 而不是 "data": []

javascript - 为什么并行运行 AJAX 查询比串行运行慢得多?

c# - 如何连接来自不同 Excel 文件的数据

excel - 给定路径中缺少文件时的错误处理程序

database - 可以从数据库中获取信息的 Word/Excel 模板

excel - 使用 selenium 将文件下载到特定目录