即时保存DataGridView单元格修改,添加了CellEndEdit事件,在事件中包含重绘页面和DataGridView,当用鼠标离开单元格时报RT错,用键盘离开时一切正常。
“百度”推荐方法1:调用事件修改为CellValueChanged。
结果:触发的地方太多,程序大规模混乱。。。。。
“百度”推荐方法2:异步调用
private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (DialogResult.OK == MessageBox.Show("是否要修改", "", MessageBoxButtons.OKCancel))
{
Users user = new Users();
user.UserName = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
user.Password = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
string sql = "update [用户表$] set 用户名='" + user.UserName + "',密码='" + user.Password + "' where 用户名='" + user.UserName + "'";
int count = OledbHelper.ExecuteNonquery(sql);
if (count == 1)
{
MessageBox.Show("修改成功");
Thread thread = new Thread(DoWork);
thread.Start();
}
}
}
public delegate void MyInvoke();
public void DoWork()
{
MyInvoke mi = new MyInvoke(LoadData);
this.BeginInvoke(mi);
}
结果:嘿嘿,解决了