首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#编写Excel Addin如何控制菜单的启用或者禁用?

C#编写Excel Addin如何控制菜单的启用或者禁用?

提问于 2023-12-26 14:19:06
回答 1关注 0查看 47

我用C#编写了一个Excel的Addin,碰到一个问题,情况如下:

我有一个Ribbon菜单栏,我希望在Excel未打开Workbook或者将Workbook都关掉了,这种状态下我的Ribbon功能禁用。为此我写了一个禁用Ribbon的函数,然后给Exce的WorkbookBeforeClose,WorkbookOpen,WorkbookActivate事件添加了调用该函数委托,这样,在事件发生时,通过检查Workbooks.Count的数量来开启或者禁用Ribbon,目前正常情况可以做到打开Workbook或者新建Workbook的时候,功能开启,关闭Workbook至一个不剩的时候,功能禁用。

但是碰到了一个特殊情况,如果最后一个工作簿,有过改动,这时候我通过菜单关闭该工作簿,会跳出来提示是否保存更改,我不点是否,点取消,这时关闭工作簿的操作取消。但是菜单会被禁用,这就尴尬了!

我也知道这个问题的原因,因为我用的时WorkbookBeforeClose事件(问题时Excel似乎没提供WorkbookAfterClose事件),所以判断的方式也比较奇葩,我是在beforeClose事件中判断当前程序Workbooks的数量是否为1,因为before事件时还没关闭,数量就是1,如果关闭了就是0了。问题就在这里。如果被取消了,但是我的beforeClose事件应该先于提示是否保存对话框执行,事件委托里面对应的Cancel参数也还是还没接收到取消的赋值。这样的话,程序做了判断关闭了最后一个工作簿,所以功能禁用,就是没法去接收最后这个关闭操作取消了。

我找了所有的Application的事件,似乎都没有合适的事件来处理这个问题。是不是大方向错了?那Excel本身那些功能是怎么做到启用禁用的呢?哪位知道,可否告知一二。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档