我有一个datagridview(这里称为cameraTable)。 datagridview的一列纯粹是复选框。我有一个按钮,单击该按钮将检查列中的所有框,也就是全选。这是代码:
Private Sub btnSelectAll_Click(sender As Object, e As EventArgs) Handles btnSelectAll.Click
For Each row As DataGridViewRow In cameraTable.Rows
DirectCast(row.Cells("CheckBox"), DataGridViewCheckBoxCell).Value = _
True
Next
End Sub
我遇到的问题是初始框(即行零)永远不会更改为已选中。我试过这些:
DirectCast(cameraTable(0, 0), DataGridViewCheckBoxCell).Value = True ' doesn't work
cameraTable.Rows(0).Cells(0).Value = True ' doesn't work
既不更改要检查的框,也不更改列中的其他行而不会出现问题。我甚至做了一个打印出值的msgbox,结果证明是“真”。因此复选框的值已更改,但仍未选中datagridview中的复选框。有什么想法吗?
感谢您的帮助!
-K
答案 0 :(得分:1)
对于当前选中的行/单元格,datagrid不会获取INotifyPropertyChanged事件(或不会处理它们)。如果您有其他可以编辑的列,请将焦点列移动到该列。
如果所有其他方法都失败了,请在设置datasource = nothing之后重新加载网格,然后再回到原来的状态。
答案 1 :(得分:1)
Private Sub dgv_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellContentClick
If e.ColumnIndex = iCBColIDX Then
dgv.CurrentCell = dgv.Rows(e.RowIndex).Cells("sts")
End If
End Sub
答案 2 :(得分:0)