C# 在excel中双击单元格时会发生什么情况?

C# 在excel中双击单元格时会发生什么情况?,c#,winforms,excel,C#,Winforms,Excel,在excel中双击单元格时会发生什么情况 我想知道这一点,因为我必须在excel viewer中控制在单元格中输入数据。在这种情况下,除非用户双击单元格,否则不允许用户在单元格中输入任何内容 我使用以下代码来保护活动工作表,使其不必双击即可输入数据: myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true, Type.Missing, Type.Missing, Type.Miss

在excel中双击单元格时会发生什么情况

我想知道这一点,因为我必须在excel viewer中控制在单元格中输入数据。在这种情况下,除非用户双击单元格,否则不允许用户在单元格中输入任何内容

我使用以下代码来保护活动工作表,使其不必双击即可输入数据:

myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 false, false, true);
它工作得很好,我想做什么就做什么

但问题发生在用户双击单元格时。我在Active工作簿的SheetBeforeBoolkit事件处理程序中编写了以下代码,以取消对工作表的保护,以便用户可以在单元格中输入数据:

myActiveWorksheet.Unprotect("password");
target.Locked = false;
以及SheetChange事件处理程序中的以下代码,以再次对其进行保护:

target.Locked = true;
myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    false, false, true);
但是,第二个保护代码(我指的是SheetChange事件处理程序中的代码)工作不正常,因此用户只需单击一下就可以键入每个单元格

我对原因有两种猜测:

1) 使用excel双击过程中发生的某些情况会导致工作表不受保护

2) SheetChange事件处理程序的目标参数未指向已更改的单元格

Ey Val

我找到了解决办法。 我应该用

myActiveWorksheet.Cells.Locked = true;
而不是

target.Locked = true;
在SheetChange事件处理程序中