我想从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。 e
是CELL 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
到另一个单元格。
答案 0 :(得分:1)
调用单元格布尔值有点奇怪。然后使用其FormattedValue
属性。我在表单中添加了DataGridView
,添加了两列Text
和Checkbox
。 CheckBox
是DataGridViewCheckBoxColumn
。然后我添加了一个按钮,这应该给你一个想法:
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);
}
}