我在DataGridView中有双击事件,如下所示:
private void gridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
// put something here to cancel the edit
Form dialogForm = new dialogContainerForm(username);
dialogForm.ShowDialog(this);
}
当这次双击时,它会调用另一个表单,当这个子表单关闭时,它将加载网格:
public void callWhenChildClick(List<string> codes)
{
//some code here
Grid_Load();
}
我有一个单元格验证,当Grid_Load()
调用时,它总是被触发:
private void gridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
string code = e.FormattedValue.ToString();
string headerText = gridView.Columns[e.ColumnIndex].HeaderText;
if (!headerText.Equals("No. Transaksi")) return;
if (string.IsNullOrEmpty(code))
{
MessageBox.Show("No. Transaksi tidak boleh kosong!");
e.Cancel = true;
}
}
如何忽略此单元格仅针对此案例Grid_Load()
进行验证?或者是否有任何功能可以取消编辑,并在双击单元格时忽略验证?
答案 0 :(得分:1)
如果您需要阻止事件处理程序执行,可以暂时将其从Object中删除,然后在您希望它再次运行时重新应用。
要禁用(实际删除)事件处理程序,请添加代码:
gridView.CellValidating -= gridView_CellValidating
在此行之后,您可以运行您想要的任何代码而不会导致事件处理程序执行。
然后可以通过添加以下行来重置或重新添加事件处理程序:
gridView.CellValidating += gridView_CellValidating
注意:每次要添加上面的事件处理程序时,您还应该在调用之前使用remove操作来防止事件处理程序执行多次(或超过预期的次数)。如果尚未添加事件处理程序并且您尝试将其删除,则不会产生任何副作用,但是,多次添加相同的事件处理程序将导致事件处理程序多次执行。