这是情景。
我有checkbox
(姓名:“全部检查”ID:chkItems)和datagridview
。当我点击此复选框时,datagridview
上的所有复选框也将被选中。
我还在网格上添加了复选框列。
DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
CheckBox chk = new CheckBox();
CheckboxColumn.Width = 20;
GridView1.Columns.Add(CheckboxColumn);
这是复选框背后的代码。 row.Cell
private void chkItems_CheckedChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in GridView1.Rows)
{
DataGridViewCheckBoxCell chk = e.row.Cells(0);
if (chk.Selected == false)
{
row.Cells(0).Value = true;
}
}
}
已解决(此处为解决方案)
private void chkItems_CheckedChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in GridView1.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[1];
if (chk.Selected == false)
{
chk.Selected = true;
}
}
}
答案 0 :(得分:12)
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell) row.Cells[0];
而不是
DataGridViewCheckBoxCell chk = e.row.Cell(0);
* 编辑: *我认为你真的想这样做:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell) row.Cells[0];
chk.Value = !(chk.Value == null ? false : (bool) chk.Value); //because chk.Value is initialy null
}
答案 1 :(得分:1)
private void setCheckBoxInDataGrid(DataGridView dgv, int pos, bool isChecked)
{
for (int i = 0; i < dgv.RowCount; i++)
{
dgv.Rows[i].DataGridView[pos, i].Value = isChecked;
}
}
我就这样做了
答案 2 :(得分:1)
试试这个
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
row.Cells[0].Value = row.Cells[0].Value == false ? true : false;
}
答案 3 :(得分:0)
如果您可以自己向checkboxes of datagridview
提供默认状态,即True或False [不指定空状态]状态(执行此操作的原因将在后者中解释)。< / p>
可以通过以下代码完成,(当您搜索要在DataGridView
中查看的结果时输入此代码)
dgv
是您正在使用的DataGridView
的对象。
for (int i = 0; i < dgv.RowCount - 1; i++)
{
dgv.Rows[i].DataGridView[0, i].Value = true;
}
其中DataGridView[0, i]
表示第0列第n行
执行此操作的原因是,在加载时,复选框默认为null
状态。代码不是比较null
状态(创建对象空引用异常)。所以,一旦你为它指定一个虚假或真实的状态。它永远不会进入null
状态
在您要检查的button_click_event中输入以下代码
for (int i = 0; i < dgv.RowCount-1; i++)
{
if (dgv.Rows[i].Cells[0].Value.ToString() != "")
{
dgv.Rows[i].Cells[0].Value = false;
}
else
{
dgv.Rows[i].Cells[0].Value = true;
}
}
它为我工作,我希望它能为你做到。
答案 4 :(得分:0)
我尝试选中所有复选框或选择它的相互关系并计算一些值......所以写下这段代码可能会有所帮助。
foreach (DataGridViewRow item in DGDoc.Rows)
{
if (item.Cells[0].Value == null)
item.Cells[0].Value = "True";
if (bool.Parse(item.Cells[0].Value.ToString()))
{
item.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(241, 215, 215);
strIDs += "," + item.Cells[1].Value.ToString();
intSumPrice += Int64.Parse(item.Cells[4].Value.ToString());
intSumTax += Int64.Parse(item.Cells[5].Value.ToString());
intSumPay += Int64.Parse(item.Cells[6].Value.ToString());
}
else
{
item.DefaultCellStyle.BackColor = System.Drawing.Color.Empty;
}
}
DGDoc.EndEdit();
答案 5 :(得分:0)
1-创建新按钮。
2-您可以在单击checkAll按钮
时使用以下代码3-单击按钮时,它将选中datagridview中的所有复选框,再次单击时,将取消选中所有复选框。
private void btncheckall_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dgvResult.Rows)
{
row.Cells[0].Value = row.Cells[0].Value == null ? false : !(bool)row.Cells[0].Value;
}
}
注意:在某些情况下,您必须先在datagridview中单击,然后单击按钮。
答案 6 :(得分:0)
您可以像这样检查所有单元格:
private void CheckAllCheckboxItemsOnDataGridView(int columnIndex)
{
foreach (DataGridViewRow row in dgFiles.Rows)
{
DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)row.Cells[columnIndex];
cell.Value = !(cell.Value == null ? false : (bool)cell.Value);
}
}
您可以像这样在CheckedChanged事件中使用方法:
private void chkItems_CheckedChanged(object sender, EventArgs e)
{
CheckAllCheckboxItemsOnDataGridView(columnIndex: 0);
}