我的CellEndEdit事件处理程序怎么被调用了两次啊?
紧急求助啊,XDJM们。小弟遇到一个难题,就是在DataGridView控件的单元格的CellEndEdit事件中添加了一个验证单元格值是否重复的功能,并弹出一个对话框。但是当单元格值重复时,该功能却被调用了两次,这是怎么回事啊?是不是输入缓冲区没有被清空呢?我的代码如下:
//验证学号是否重复
string tempXuehao = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
SqlCommand mySqlCommand2 = new SqlCommand();
mySqlCommand2.CommandText = "select * from Grade where 学号='" + tempXuehao + "'";
mySqlCommand2.Connection = con;
con.Open();
if (mySqlCommand2.ExecuteScalar() != null)
{
MessageBox.Show(this,
"此学号已存在,请重新输入!",
"学号重复!",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
this.dataGridView1.BeginEdit(true);
}
con.Close();
------解决方案--------------------为什么要在CellEndEdit事件里面写呢,你可以在CellValueChanged事件里面写,效果一样!
------解决方案-------------------- //this.dataGridView1.BeginEdit(true);
------解决方案--------------------
你查出两个等的,当然提示两次。。
第一次它本身也相当啊,你得排除
------解决方案--------------------bool b=false;
private void datagridview1.cellendedit()
{
if(b) b=false;
else
{
//操作
//...
b=true;
}
}
------解决方案--------------------DataGridView的单元格验证可以使用这个事件:
DataGridView.CellValidating 事件。
------解决方案--------------------