StartEdit
开始编辑的时候执行。
e参数属性:
Table: 准备编辑的表
Row: 准备编辑的行
Col: 准备编辑的列
IsFocusCell: 逻辑型,是否是焦点单元格
Cancel: 逻辑型,默认为False,设为True取消编辑。
StartEdit事件的使用方法和PrepareEdit事件完全一样,实际上大部分PrepareEdit能完成的工作,都可以用StartEdit完成。
但是两者有细微差别;PrepareEdit事件的代码,一进入单元格就会执行,为可能开始的编辑工作做准备,所以执行效率会差一些,因为并不是每次进入单元格都是需要编辑的;而StartEdit只是在真正开始编辑的时候执行,效率会稍微好一点;不过这种效率的差别,我们并不会明显感觉得到。
此外用于设置列表项目的代码,最好不要用在StartEdit事件中,否则你选择某一单元格的时候,可能不会出现下拉箭头按钮,因为此时StartEdit事件并没有执行,列表项目当然也就没有准备好。
千万不要在PrepareEdit事件显示Messagebox这样的对话框,因为每次进入单元格就会出现提示,这样会导致死循环的出现;在StartEdit事件中显示对话框就没有这个问题,因为此时只有用户真正做出编辑动作的时候,对话框才会显示。
示例
假定消费表中还有一个折扣列,我们希望只有经理级别的用户才能编辑该列的数据,如果其他用户试图编辑该列,则给出明确拒绝的提示,为此可在该表的StartEdit事件中输入代码:
If
e.Col.Name = "折扣" AndAlso User.Group <> "经理" Then
e.Cancel = True '取消编辑
Messagebox.Show("只有经理才能打折!","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
上面的代码如果设置在PrepareEdit事件中,非经理级用户一旦选择折扣列,将不停地出现提示窗口,使得你再也回不到正常的操作界面,你只能借助Foxtable提供的灾难恢复了。
而设置在StartEdit事件中,就不会有任何问题。