| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 1468 人关注过本帖
标题:如何实现监测datagridview中的checkbox的状态?
收藏  订阅  推荐  打印 
ld999
Rank: 2
等级:注册会员
帖子:146
积分:1720
注册:2007-4-11
如何实现监测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 = "";
                }  
   
            }
         }
搜索更多相关主题的帖子: checkbox  datagridview  状态  监测  
2008-1-24 12:57
tanxiaolin
Rank: 2
等级:注册会员
帖子:71
积分:908
注册:2007-12-12

你加个try{}吧,做个异常处理就OK了。
2008-1-24 13:04
ld999
Rank: 2
等级:注册会员
帖子:146
积分:1720
注册:2007-4-11

下面是改进后的事件和代码,   还是刚才的毛病,功能上,如果慢慢的一点一点的多次点也没问题,就是不能加快速度多点,情况是这边不管是什么状态,是不是勾选,而旁边的列不变化了。只能停下,再点一下,才行。
   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 = "已审核";
                }
            }
               
        }
2008-1-24 14:47
C_B_Lu
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:453
积分:4918
注册:2006-1-10

不要用CellClick事件,用CellValueChange事件呢(不知事件名有没有写错), 
试试看。

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2008-1-24 23:34
ld999
Rank: 2
等级:注册会员
帖子:146
积分:1720
注册:2007-4-11

真的感谢
2008-1-25 08:56
ld999
Rank: 2
等级:注册会员
帖子:146
积分:1720
注册:2007-4-11

to:C_B_Lu

能不能麻烦你帮我调一下,我给你发地去
2008-1-25 09:06
ld999
Rank: 2
等级:注册会员
帖子:146
积分:1720
注册:2007-4-11

请留你的邮箱或QQ 号
2008-1-25 09:07
happynise
Rank: 1
等级:新手上路
帖子:8
积分:180
注册:2006-10-9

以后最好问问题水平要高一点!

这样大家也好帮助你!

比如: 1+1=

而不是 1+1 为何=2.
2008-1-25 23:29
jockey
Rank: 4
等级:高级会员
威望:8
帖子:926
积分:9600
注册:2005-12-4

同样的问题我也碰到了,楼主是怎么解决的?分享一下吧!

2008-7-16 11:28
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051137 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved