winform之datagridview中的datagridviewcheckboxcell中复选框如何通过代码来勾上或取消勾上?

我的需求是这样的,当用户点击CHECKBOX勾上复选框时,如果不满足我设定的条件时自动将其已经勾上的勾去掉,我在下面事件中捕捉当前勾上的事件,但是无法将其勾去掉。priv... 我的需求是这样的,当用户点击CHECKBOX勾上复选框时,如果不满足我设定的条件时自动将其已经勾上的勾去掉,我在下面事件中捕捉当前勾上的事件,但是无法将其勾去掉。
private void dgvJointList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
}
展开
 我来答
Ben
推荐于2016-10-10 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((bool)dataGridView1.Rows[e.RowIndex].Cells[你的列下标].EditedFormattedValue == true)
            {
                dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = false;
            }
            else
            {
                dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = true;
            }
        }

 这个是单个的选中与取消代码


全选的与全取消的,准确说叫反选

for(int i=0;i<dataGridView1.rows.count;i++)
{
  if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)
            {
                dataGridView1.Rows[i].Cells[你的列下标].Value = false;
            }
            else
            {
                dataGridView1.Rows[i].Cells[你的列下标].Value = true;
            }
}


全部选中

for(int i=0;i<dataGridView1.rows.count;i++)
{
  if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)          
            {
                dataGridView1.Rows[i].Cells[你的列下标].Value = true;
            }
}

全部取消

for(int i=0;i<dataGridView1.rows.count;i++)
{
  if ((bool)dataGridView1.Rows[i].Cells[你的列下标].EditedFormattedValue == true)          
            {
                dataGridView1.Rows[i].Cells[你的列下标].Value = false;
            }
}
追问
谢谢,帮忙看看我的补充的需求
追答

private void dgvJointList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
       {
      }

这个事件是无法处理当前的应用的.因为您可能造成死循环,

CurrentCellDirtyStateChanged该事件是当改变状态时触发,导致您点击在去掉再勾上再去掉(您此时只是恰巧没有触碰到边缘地带)


请使用ContentClick(有两种Cell的推荐)

如果点击判定当前行是否达标否则去掉:

例如我这样

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((bool)dataGridView1.Rows[e.RowIndex].Cells[你的列下标].EditedFormattedValue == true)
            {
                if(你的逻辑判定)
                {
                符合规则了.
                dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = true;
                }
                else
                {
                dataGridView1.Rows[e.RowIndex].Cells[你的列下标].Value = false;
                }
            }
        }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式