来帮我看一句死循环
不理解下面这句为何死循环?
private void myDataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(DateTime.Now.Date.ToString());
this.myDataGridView1.Rows[e.RowIndex].Cells[15].Value = DateTime.Now.Date;
}
------解决方案--------------------this.myDataGridView1.Rows[e.RowIndex].Cells[15].Value = DateTime.Now.Date;
这条语句会重新触发CellValueChanged事件,,,所以是死循环...
------解决方案--------------------这必然是死循环.而且是,在你触发changed事件以后开始的
this.myDataGridView1.Rows[e.RowIndex].Cells[15].Value = DateTime.Now.Date;
因为你有上面这句.
简单理解是:在你第一次触发changed事件后,首先输出一个弹出框.然后更改里面的值.这时候又触发了changed事件,如此反复死循环就开始了
------解决方案--------------------改变Cell的值触发CellValueChanged事件,CellValueChanged事件处理中又改变Cell的值
当然死循环~
------解决方案--------------------我的意思是
if (this.myDataGridView1.Rows[e.RowIndex].Cells[15].Value != DateTime.Now.Date)
{
this.myDataGridView1.Rows[e.RowIndex].Cells[15].Value = DateTime.Now.Date;
}
当条件不符合时,就不会执行赋值操作,也就不会再触发CellValueChanged事件了吧。
我没怎么用过.net,正在学习,不知道是不是正确!