如何检查dataGridView checkBox是否被选中?

时间:2013-12-08 11:23:09

标签: c# visual-studio-2012 datagridviewcheckboxcell

我是编程和C#语言的新手。我被卡住了,请帮忙。所以我编写了这段代码(c#Visual Studio 2012):

private void button2_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
         if (row.Cells[1].Value == true)
         {
              // what I want to do
         }
    }
}

所以我收到以下错误:

运算符'=='无法应用于'object'和'bool'类型的操作数。

6 个答案:

答案 0 :(得分:31)

您应该使用Convert.ToBoolean()检查是否已选中dataGridView复选框。

private void button2_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
         if (Convert.ToBoolean(row.Cells[1].Value))
         {
              // what you want to do
         }
    }
}

答案 1 :(得分:4)

值返回一个对象类型,无法与布尔值进行比较。您可以将值强制转换为bool

if ((bool)row.Cells[1].Value == true)
{
    // what I want to do
}

答案 2 :(得分:4)

这里的所有答案都容易出错,

所以要为那些偶然发现这个问题的人解决问题,

实现OP所需要的最佳方法是使用以下代码:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    DataGridViewCheckBoxCell cell = row.Cells[0] as DataGridViewCheckBoxCell; 

    //We don't want a null exception!
    if (cell.Value != null)
    {
        if (cell.Value == cell.TrueValue)
        {
           //It's checked!
        }  
    }              
}

答案 3 :(得分:0)

轻微修改应该有效

input

答案 4 :(得分:0)

if (Convert.ToBoolean(row.Cells[1].EditedFormattedValue))
{
    //Is Checked
}

答案 5 :(得分:0)

上面的代码是错误的!

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    DataGridViewCheckBoxCell cell = row.Cells[0] as DataGridViewCheckBoxCell; 

    // Note: Can't check cell.value for null if Cell is null 
    // just check cell != null first
    //We don't want a null exception!
    if (cell.Value != null)
    {
        if (cell.Value == cell.TrueValue)
        {
           //It's checked!
        }  
    }              
}