C#Datagridview复选框值

时间:2012-07-21 02:03:21

标签: c# winforms datagridview checkbox

我想从datagridview获取一个复选框值(True / False),但我总是得到一个值“null”,这里是我得到复选框值的代码:

DataGridViewCheckBoxCell boolean = (DataGridViewCheckBoxCell)dgv[e.ColumnIndex, e.RowIndex];
string checkCheckboxChecked = ((bool)boolean.FormattedValue) ? "False" : "True";

即使选中了复选框,此代码也会在false中返回Boolean.FormattedValue 我也尝试了另一个:

object value = dgvVisual[e.ColumnIndex, e.RowIndex].Value;

此代码返回null值

为什么会这样?

P.S。 eCELL CONTENT CLICK的事件。

以下是datagridview单元格内容的完整代码点击:

private void dgvVisual_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    int Number1= int.Parse(dgvVisual[0, e.RowIndex].Value.ToString());
    int Number2 = (e.ColumnIndex - 1);                
    DataGridViewCheckBoxCell boolean = (DataGridViewCheckBoxCell)dgvVisual[e.ColumnIndex, e.RowIndex];
    bool checkCheckboxChecked = (null != boolean && null != boolean.Value && true == (bool)boolean.Value);
    //string checkCheckboxChecked = "";
    if (checkCheckboxChecked)
    {
        //do something if the checkbox is checked
    }
    else
    {
        //do something if the checkbox isn't
    }
}

解决: 我更改了CELL END EDIT EVENT并将点击内容添加到datagridview.CurrentCell到另一个单元格。

1 个答案:

答案 0 :(得分:1)

调用单元格布尔值有点奇怪。然后使用其FormattedValue属性。我在表单中添加了DataGridView,添加了两列TextCheckboxCheckBoxDataGridViewCheckBoxColumn。然后我添加了一个按钮,这应该给你一个想法:

private void button1_Click(object sender, EventArgs e)
{
    dgv.AutoGenerateColumns = false;
    DataTable dt = new DataTable();
    dt.Columns.Add("Text");
    dt.Columns.Add("CheckBox");
    for (int i = 0; i < 3; i++)
    {
        DataRow dr = dt.NewRow();
        dr[0] = i.ToString();
        dt.Rows.Add(dr);
    }
    dgv.DataSource = dt;            
}

private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    foreach (DataGridViewRow row in dgv.Rows)
    {
        var oCell = row.Cells[1] as DataGridViewCheckBoxCell;
        bool bChecked = (null != oCell && null != oCell.Value && true == (bool)oCell.Value);
    }
}