无法在数据绑定DataGridView中选中复选框

时间:2010-10-18 11:28:10

标签: c# winforms datagridview datagridviewcheckboxcell

我有一个DataGridView,它工作得非常好。我用它来显示数据。

现在我希望能够通过复选框选择行,并且仅在单击按钮时对所选行执行操作(此按钮在同一表单上的网格之外)。 为此,我按照these步骤将复选框列添加到datagridview。

在运行应用程序时看到的是我无法通过鼠标单击或键盘选中复选框。通过它的外观,我可以理解它不是处于禁用/只读状态。因此,每当我尝试单击复选框时,它会正常更改它的边框,因为启用了复选框。但最后它没有勾选复选框。

4 个答案:

答案 0 :(得分:3)

试试吧。

 private void Form1_Load(object sender, EventArgs e)
    {
        DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
        dataGridView1.Columns.Insert(0,ck);
    }

可以帮到你。

Ismail 此处是您混淆的解决方案Dgv-DatabindingCompleteEvent

答案 1 :(得分:1)

如果要检查dgv中所有复选框的状态:

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

    if (Convert.ToBoolean(chk.Value) == true)
      MessageBox.Show("this cell checked");

}

答案 2 :(得分:1)

我遇到了同样的问题。对我来说,解决方案非常简单。我的datagridview有一个禁用的编辑选项(因为我不希望用户更改数据),我希望能够检查/取消选中我的DataGridViewCheckBoxColumn。所以在dataGridView属性中我检查了“启用编辑”选项,但在代码中我已经为除了我想要的checkBoxColumn之外的每一列禁用了它。 希望它会对某人有所帮助。

答案 3 :(得分:0)

在我的情况下,我在page_load中有gridview加载代码,因此在单击按钮后重新加载了网格并丢失了选择。因此,将代码移入内部

if(!isPostback)
{ LoadGrid();}

为我工作。

在page_load中放置一个断点以更好地理解。