在Windows窗体DataGridview中捕获复选框单击事件

时间:2011-03-10 10:48:51

标签: winforms datagridview

我的应用程序中有一个Winforms DataGridView。

我有两个复选框列以及数据库中的其他5列。这两个复选框列添加了DataGridViewCheckBoxColumn。

当用户点击第二个复选框时,如果没有为该行选中第一个复选框,我需要向用户显示一条消息。

我该如何解决这个问题? 我尝试过这个,但是单元格值是空的。 我做错了什么?

private void dgTest_CellClick(System.Object sender, DataGridViewCellEventArgs e)
{
    DataGridViewCheckBoxCell officialCbCell = row.Cells[1] as DataGridViewCheckBoxCell;
    DataGridViewCheckBoxCell includeCbCell = row.Cells[0] as DataGridViewCheckBoxCell;

    if (officialCbCell != null)
    {
        if (officialCbCell.Value != null && (bool)officialCbCell.Value == true)
        {
            if (includeCbCell != null && (bool)includeCbCell.Value == false)
            {
                MessageBox.Show("INVALID");
            }
        }
    }
}

感谢。

2 个答案:

答案 0 :(得分:7)

您可以尝试使用网格的 CellValueChanged 事件

void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        bool isChecked = (Boolean) dataGridView1[0, e.RowIndex].FormattedValue;

        if (isChecked)
            dataGridView1[1, e.RowIndex].Value = true;
    }
}

如果选中,则可以将其他列设置为已选中或任何其他验证

答案 1 :(得分:1)

如果您单击取消/单击该单元格,

CellContentClick事件和cell.EditingCellFormattedValue属性也很有用。