如何检查datagridview列中是否选中了复选框

时间:2014-01-11 10:01:59

标签: c# winforms checkbox datagridview

我在Windows窗体中有一个Datagridview,用于加载数据。我还在运行时向此Datagridview添加了一个复选框列。我的问题是如何知道复选框列中的任何复选框是否已被选中,如果选中了复选框,则启用按钮。我已经使用CellValueChanged事件执行上述任务但无法获得所需的结果。

这就是我所做的

 List<int> ChkedRow = new List<int>();

        for (int i = 0; i <= Datagridview1.RowCount - 1; i++)
        {
            if (Convert.ToBoolean(Datagridview1.Rows[i].Cells["chkcol"].Value) == true)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }

        }

2 个答案:

答案 0 :(得分:1)

在循环

之前设置false
button1.Enabled = false;

当您找到已选中的项目时,请将其设置为已启用truebreak循环

button1.Enabled = true;
break;

代码:

button1.Enabled = false;
for (int i = 0; i <= Datagridview1.RowCount - 1; i++)
{

    if (Convert.ToBoolean(Datagridview1.Rows[i].Cells["chkcol"].Value))
    {
        button1.Enabled = true;
        break;
    }
}

或者你也可以在下面做

button1.Enabled = false;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
   DataGridViewCheckBoxCell cell = row.Cells[colCheckIndex] as DataGridViewCheckBoxCell;
   if (cell.Value == cell.TrueValue){
      button1.Enabled = true;
      break;
    }
}

答案 1 :(得分:0)

试用此代码

button1.Enabled = false;
foreach (DataGridViewRow row in Datagridview1.Rows)
{
    if (((DataGridViewCheckBoxCell)row.Cells["chkcol"]).Value)
      {
        button1.Enabled = true;
        break;
      }

}

//This will always call the checking of checkbox whenever you ticked the checkbox in the datagrid
private void DataGridView1_CellValueChanged(
    object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == [Your column index])
       CheckForCheckedValue();
}

private void CheckForCheckedValue()
{
   button1.Enabled = false;
   foreach (DataGridViewRow row in Datagridview1.Rows)
   {
    if (((DataGridViewCheckBoxCell)row.Cells["chkcol"]).Value)
      {
        button1.Enabled = true;
        break;
      }
   }
}

注意 不要忘记检查是否为Null值,如果为NULL则执行某些操作