允许用户在C#WinForms DataGridView中取消添加条目
我已决定在我的允许用户在C#WinForms DataGridView中取消添加条目,c#,winforms,validation,datagridview,C#,Winforms,Validation,Datagridview,我已决定在我的C#WinForms应用程序中使用DataGridView就地编辑。我想让用户添加一个新行,当他离开时,将该行存储在数据库中。在目前的情况下,只有一列。此外,每个条目都应该是唯一的 如果他在其中输入了一些唯一的值,那么该行将得到验证,并且所有操作都很好。如果他输入了重复的值,在行验证事件中,我将设置e.Cancel=true,并显示错误消息框 问题是,如果他开始添加,但后来改变了主意,不想再添加了,那么除了关闭表单之外,他没有办法取消它 我尝试将其添加到行验证事件中,但它不允许单击
C#
WinForms
应用程序中使用DataGridView
就地编辑。我想让用户添加一个新行,当他离开时,将该行存储在数据库中。在目前的情况下,只有一列。此外,每个条目都应该是唯一的
如果他在其中输入了一些唯一的值,那么该行将得到验证,并且所有操作都很好。如果他输入了重复的值,在行验证
事件中,我将设置e.Cancel=true
,并显示错误消息框
问题是,如果他开始添加,但后来改变了主意,不想再添加了,那么除了关闭表单之外,他没有办法取消它
我尝试将其添加到行验证
事件中,但它不允许单击除当前行以外的任何其他位置:
if (dgv_Industries[e.ColumnIndex, e.RowIndex].Value == null || string.IsNullOrEmpty(dgv_Industries[e.ColumnIndex, e.RowIndex].Value.ToString()))
{
e.Cancel = true;
return;
}
如果我没有设置e.Cancel=true
,而只是设置return
,它将继续触发RowValidated
事件。我可以在这里中止数据库操作,但在DataGridView
中,我会遇到一个空行(除了标准的空添加行),如下所示,这不仅看起来是错误的,还会使我的功能崩溃(除非我执行更多检查)
然后我尝试在RowValidated
事件中执行此操作,但它产生了一个操作,无法在此事件处理程序中执行。
异常:
dgv_Industries.Rows.RemoveAt(e.RowIndex);
允许用户取消添加新行,同时删除它创建的行的正确方法是什么?您使用什么作为数据源?由于WinForms中数据绑定DataGridView的不足,它不绑定任何内容。数据是通过编程方式从MySQL数据库中提取的。我相信按esc键会自动删除行。事实上,您是正确的。需要注意的是,我覆盖了OnUserDeletingRow事件,该事件在按下Esc键时被触发,这隐藏了我正在寻找的功能。请将此作为答案发布,以便我可以奖励它。谢谢