DatagridView复选框已检查?

时间:2009-03-23 13:29:14

标签: c# windows

我在datagridview窗体中有一个复选框,并有一个事件处理程序cell_Click 在单元格上单击我检查datagridview列的复选框如果单元格也被选中则显示为true(即未选中复选框且仅选中了数据网格视图单元格)并且未选中复选框。列gettype并找到它显示DatagridViewCheckBox的类型,但错误的检查值。???

3 个答案:

答案 0 :(得分:9)

如果我理解正确,您说复选框值与基础数据不对齐?

这可能是因为数据已经更新并且是“脏的”,例如它还没有被提交到数据源。如果你添加一个这样的事件处理程序:

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
   if (dataGridView1.CurrentCell is System.Windows.Forms.DataGridViewCheckBoxCell)
   {
      dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
   }
}

然后,这应该更新数据源,当您查询单元格时,您将拥有正确的复选框状态。

答案 1 :(得分:1)

我找到了一个问题的答案。这个链接帮助我找到了解决方案。 克莱德和伊恩的答案也是其中的一部分谢谢。 链接在这里。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged.aspx

答案 2 :(得分:0)

这里有几件事:

  • 单元格点击事件只是意味着用户在数据网格视图上单击了鼠标按钮,您要查找的内容可能是CellValueChanged
  • 此事件将为您提供已更改的单元格的坐标。您应该检查它是否在您的复选框列中,然后获取对单元格的引用,您可以检查cell.Value以查看它是真还是假。你不会在DataGridViewCheckBoxColumn上找到任何值 - 它将在单元级别,并且你总能找到存储在cell.Value中的值,无论它是什么类型的列。