我正在使用C#为Excel编写VSTO插件,但无法正确实现撤销功能。
据文档所述,您应该使用
理想情况下,我希望将撤销回调设置为实例方法,例如:
很不幸,虽然这会注册一个撤消操作,但实际上在Excel中点击“撤消”时会出现以下错误:
无法运行宏“this.UndoTextColorChange”。该宏可能在此工作簿中不可用,或者所有宏都已禁用。
对我来说,这几乎意味着
据文档所述,您应该使用
Application.OnUndo
注册一个撤销回调。然而,对于 Procedure
参数是否可以引用 C# 方法并不清楚。
理想情况下,我希望将撤销回调设置为实例方法,例如:
this.Application = Globals.ThisAddIn.Application;
// ...
this.Application.OnUndo("Undo color change", "this.UndoTextColorChange");
很不幸,虽然这会注册一个撤消操作,但实际上在Excel中点击“撤消”时会出现以下错误:
无法运行宏“this.UndoTextColorChange”。该宏可能在此工作簿中不可用,或者所有宏都已禁用。
对我来说,这几乎意味着
Procedure
参数必须是VB宏(而不是C#方法)。但是,我也有可能没有能够找到要在.OnUndo
调用中使用的完全限定过程名称。
是否可能让Application.OnUndo
调用C#方法?如果是,那么我应该使用什么作为Procedure
的参数?如果不行,那么在C# VSTO插件中通常如何实现撤销功能?