问题描述
有人可以帮助我为什么它不起作用吗?我有一个 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 上的复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!