本文介绍了选中/取消选中 datagridview 上的复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以帮助我为什么它不起作用吗?我有一个 checkbox 如果我点击它,这应该取消选中 datagridview 中的所有复选框,这些复选框在包含用户选择的复选框之前已选中.

Can someone help me why it doesn't work?I have a checkbox and if I click on it,this should uncheck all the checkbox inside the datagridview which were checked before including the user selected checkbox.

代码如下:

        private void chkItems_CheckedChanged(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in datagridview1.Rows)
            {
                DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[1];
                if (chk.Selected == true)
                {
                    chk.Selected = false;
                }
                else
                {
                    chk.Selected = true;
                }
            }
        }

不应选中该复选框.应该检查一下.

the checkbox should not be selected. it should be checked.

这是添加的列

            DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
            CheckBox chk = new CheckBox();
            CheckboxColumn.Width = 20;
            datagridview1.Columns.Add(CheckboxColumn);

推荐答案

看这个 MSDN 论坛发帖 它建议将 Cell 的值与 Cell.TrueValue.

Looking at this MSDN Forum Posting it suggests comparing the Cell's value with Cell.TrueValue.

因此,按照它的示例,您的代码应该如下所示:(这是完全未经测试的)

So going by its example your code should looks something like this:(this is completely untested)

似乎未绑定 DataGridViewCheckBox 的 Cell.TrueValue 的默认值为空,您需要在列定义中设置它.

it seems that the Default for Cell.TrueValue for an Unbound DataGridViewCheckBox is null you will need to set it in the Column definition.

private void chkItems_CheckedChanged(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[1];
        if (chk.Value  == chk.TrueValue)
        {
            chk.Value = chk.FalseValue;
        }
        else
        {
            chk.Value = chk.TrueValue;
        }
    }
}

此代码是在构造函数中设置 TrueValue 和 FalseValue 并检查空值的工作说明:


This code is working note setting the TrueValue and FalseValue in the Constructor plus also checking for null:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
        CheckboxColumn.TrueValue = true;
        CheckboxColumn.FalseValue = false;
        CheckboxColumn.Width = 100;
        dataGridView1.Columns.Add(CheckboxColumn);
        dataGridView1.Rows.Add(4);
    }

    private void chkItems_CheckedChanged(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[0];
            if (chk.Value == chk.FalseValue || chk.Value == null)
            {
                chk.Value = chk.TrueValue;
            }
            else
            {
                chk.Value = chk.FalseValue;
            }

        }
        dataGridView1.EndEdit();
    }
}

这篇关于选中/取消选中 datagridview 上的复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 17:05