我正在尝试在 C# 中为 Excel XP 编写一个 COM 插件,该插件禁止双击单元格进行编辑。
我想弹出一个框,说禁止以这种方式编辑单元格,然后停止所有执行。
浏览 Microsoft 的文档,这似乎是一项非常简单的任务,您可以AppEvents_SheetBeforeDoubleClickEventHandler
使用签名创建一个 Application 事件,并将其func(object sheet, Range Target, ref bool Cancel)
设置Cancel
为 true 以便停止执行。
我有以下内容:
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
Excel.Application app = application as Excel.Application;
app.SheetBeforeDoubleClick += Excel.AppEvents_SheetBeforeDoubleClickEventHandler(beforeDoubleClick);
}
void beforeDoubleClick(object sheet, Excel.Range Target, ref bool Cancel)
{
MessageBox.Show("Cannot edit cells this way sorry.");
Cancel = true;
}
显示消息框,但随后将单元格置于编辑模式,但是,如果我从 VBA 获得相同的东西,它就可以工作。
使用以下代码的 VB.NET 插件也会发生同样的情况。
Private WithEvents app As Excel.Application
Public Sub OnConnection(ByVal application As Object,
ByVal connectMode As Extensibility.ext_ConnectMode,
ByVal addInInst As Object,
ByRef custom As System.Array)
Implements Extensibility.IDTExtensibility2.OnConnection
app = application
End Sub
Sub Worksheet1_BeforeDoubleClick(ByVal obj As Object,
ByVal Target As Excel.Range,
ByRef Cancel As Boolean)
Handles app.SheetBeforeDoubleClick
MsgBox("Double-clicking in this sheet is not allowed.")
Cancel = True
End Sub