C# 在DataGridView中编辑单元格后,应在哪个事件之后执行操作?
我在窗体上有一个WinForms DataGridView控件。此DataGridControl中有两个字段:C# 在DataGridView中编辑单元格后,应在哪个事件之后执行操作?,c#,.net,vb.net,winforms,events,C#,.net,Vb.net,Winforms,Events,我在窗体上有一个WinForms DataGridView控件。此DataGridControl中有两个字段: 电子邮件地址 解析的电子邮件地址(根据电子邮件地址中的输入计算) 用户输入或更改电子邮件地址中的值后,我希望解析电子邮件地址中的值根据单独的方法更新。我应该连接到什么事件,以便在更新电子邮件地址单元格后更新已解析电子邮件地址单元格 我不确定将事件放置在何处,因为用户在添加/更改值后可以执行许多操作:在下一个单元格中添加选项卡,在窗体上单击取消,在窗体上单击确定,等等。有什么想法吗?
电子邮件地址
(根据解析的电子邮件地址
中的输入计算)电子邮件地址
电子邮件地址
中的值后,我希望解析电子邮件地址
中的值根据单独的方法更新。我应该连接到什么事件,以便在更新电子邮件地址
单元格后更新已解析电子邮件地址
单元格
我不确定将事件放置在何处,因为用户在添加/更改值后可以执行许多操作:在下一个单元格中添加选项卡,在窗体上单击取消,在窗体上单击确定,等等。有什么想法吗?
CellValueChanged
编辑完成后激发,例如,当用户离开单元格时。以下是我所做的:
使用dataGridView的CellBeginEdit和CellEndEdit事件来控制事情。如果您正在编辑电子邮件地址单元格并从中删除选项卡,它将触发CellEndEdit事件
当你点击其中一个按钮时,你应该会得到一个CellEndEdit事件和一个button click事件——在我的测试中,我总是先得到CellEndEdit,但我想是YMMV
如果CellEndEdit发生时存在无效的内容,您可以确保不执行OK/Cancel代码
此外,您可以使用CellValidating事件和e。如果该值无效,则取消该事件。这将阻止按钮单击事件触发,并将您留在编辑的单元格中。与您尝试执行的操作相关的事件顺序是:
- 1) 细胞验证
- 2) CellValueChanged
- 3) 细胞验证
- 4) CellEndEdit
CellValidating
,因为在CellValidating
中,可以将DataGridViewCellValidatingEventArgs
中包含的e.Cancel
标志设置为true,这将自动将控制权返回到该单元格
如果您只是想更新显示(解析的电子邮件名称),请使用CellValueChanged
private void myDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
e.Cancel = (!validateMyInput(e.FormattedValue.ToString());
}
私有void myDataGridView\u CellValueChanged(对象发送方,DataGridViewCellEventArgs e)
{
e、 Cancel=(!validateMyInput(例如,FormattedValue.ToString());
}
如果用户单击“确定”或“取消”按钮,如果“单元格值更改”中的某些内容无效,是否有方法停止触发相应的事件事件?@Ben McCormack:请看行后tsmatt的回答。
DGV
是数据绑定的吗?您使用的是DataTable
还是List
?@Vivek当表单加载时,它是数据绑定到DataTable的。