ld999 发布留言 2008-1-24 12:57
如何实现监测datagridview中的checkbox的状态?
我用了以下事件和代码:出现一个问题,轻轻的单击,运行正常,如果速度稍为一快的点击该列,就会出现混乱,也就是选中时,审核列却为未审核了,正好相反。请问一下如何修改。谢谢
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) //根据checkbox值的不同,进行审核和存储。
{
if (e.ColumnIndex == 0)
{
if (this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "True")
{
(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Value = "False";
this.dataGridView1.Rows[e.RowIndex].Cells[8].Value = "已审核";
}
else if (this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "False")
{
(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Value = "True";
this.dataGridView1.Rows[e.RowIndex].Cells[8].Value = "";
}
}
}
tanxiaolin 发布留言 2008-1-24 13:04
你加个try{}吧,做个异常处理就OK了。
ld999 发布留言 2008-1-24 14:47
下面是改进后的事件和代码, 还是刚才的毛病,功能上,如果慢慢的一点一点的多次点也没问题,就是不能加快速度多点,情况是这边不管是什么状态,是不是勾选,而旁边的列不变化了。只能停下,再点一下,才行。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (e.ColumnIndex == 0)
{
if (((DataGridViewCheckBoxCell)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Tag == null)
{
((DataGridViewCheckBoxCell)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Tag = "1";
this.dataGridView1.Rows[e.RowIndex].Cells[8].Value = "已审核";
}
else if (Convert.ToBoolean(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value) == true)
{
((DataGridViewCheckBoxCell)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Tag = "0";
this.dataGridView1.Rows[e.RowIndex].Cells[8].Value = "";
}
else
{
((DataGridViewCheckBoxCell)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]).Tag = "1";
this.dataGridView1.Rows[e.RowIndex].Cells[8].Value = "已审核";
}
}
}
C_B_Lu 发布留言 2008-1-24 23:34
不要用CellClick事件,用CellValueChange事件呢(不知事件名有没有写错),
试试看。
ld999 发布留言 2008-1-25 08:56
真的感谢
ld999 发布留言 2008-1-25 09:06
to:C_B_Lu
能不能麻烦你帮我调一下,我给你发地去
ld999 发布留言 2008-1-25 09:07
请留你的邮箱或QQ 号
happynise 发布留言 2008-1-25 23:29
以后最好问问题水平要高一点!
这样大家也好帮助你!
比如: 1+1=
而不是 1+1 为何=2.
jockey 发布留言 2008-7-16 11:28
同样的问题我也碰到了,楼主是怎么解决的?分享一下吧![tk28]
页: [1]