选择datagridview中的复选框c#

时间:2012-11-09 08:26:00

标签: c# winforms datagridview

我在datagridview中有一个下拉列表,一个按钮和一个复选框。

我只是在datagridview上手动创建了一个复选框列。 (这是代码)

DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
            CheckBox chk = new CheckBox();
            CheckboxColumn.Width = 20;
            DataGrid1.Columns.Add(CheckboxColumn);

这是程序。
第1步:用户将选中复选框上的项目 第2步:用户将在下拉列表中选择项目 第3步:用户点击按钮,它将更改项目名称
在下拉列表中选中项目之前的复选框上。

这是我的问题 点击按钮后,就会发生这种情况。

这是我的代码。

private void button1_Click(object sender, EventArgs e)
        {
    int x = 0;
                foreach (DataGridViewRow item in this.DataGrid1.SelectedRows)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)item.Cells[1];
                    if (chk.Selected)
                    {
                    // codes here
                    }
                    else
                    {
                    //code here
                    }
                }
                x = x + 1;
         }

2 个答案:

答案 0 :(得分:1)

*已编辑**

我已经测试了这个,它绝对有效。将其复制并粘贴到一个新项目中并使用它。它应该可以帮助你到达你需要的地方。

   private void Form1_Load(object sender, EventArgs e)
    {

        DataGridViewCheckBoxColumn checkBox = new DataGridViewCheckBoxColumn(true);
        checkBox.HeaderText = "T/F";
        dataGridView1.Columns.Add(checkBox);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {

            DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[0];

            if (Convert.ToBoolean(chk.Value) == true)
            {
                MessageBox.Show("Value Is True");
            }

        }
    }

答案 1 :(得分:0)

我建议打电话的第一件事是:

DataGrid1.EndEdit();

因为,我经历过,如果在从网格列中检索复选框值之前缺少此行,有时输入不会按预期显示。

这样的事情:

private void button1_Click(object sender, EventArgs e)
{
    int x = 0;
    foreach (DataGridViewRow item in this.DataGrid1.SelectedRows)
    {
        DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)item.Cells[1];

        if (chk.Value)
        {
              // codes here for checked condition
        }
        else
        {
              //code here  for UN-checked condition
        }
      }
     x = x + 1;
 }