vb.net - 更新 CellClick 上的 DataGridViewCheckBoxColumn 复选框
问题描述
我有一个带有 DataGridViewCheckBoxColumn 列的 DataGridView。单元格大小大于复选框,因此为了使其用户友好,我希望 CellClick 事件的行为就像复选框本身被单击一样。
目前,我在 CellClick 事件中执行此操作:
If e.ColumnIndex = dgv.Columns("CONFIRM").Index Then
If CBool(dgv.Item("CONFIRM", e.RowIndex).Value) = True Then
dgv.Item("CONFIRM", e.RowIndex).Value = False
Else
dgv.Item("CONFIRM", e.RowIndex).Value = True
End If
End If
但是,直到单元格失去焦点后,复选框才真正改变状态。我已经看到了许多关于处理不同事件(CellValueChanged、CurrentCellDirtyStateChanged)(例如http://www.codingeverything.com/2013/01/firing-datagridview-cellvaluechanged.html)和提交更改的建议:
If dgvDownloads.IsCurrentCellDirty Then
dgvDownloads.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
但是这不起作用,dgv 闪烁但复选框不会更改选中状态。
单击包含单元格时,如何强制 DataGridViewCheckBoxColumn 中的复选框更新其状态?
解决方案
尝试更多这样:
Public Class FormDGV
Private Sub FormDGV_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With DataGridView1
.Columns.Add(New DataGridViewCheckBoxColumn With {
.Name = "Confirm",
.HeaderText = "Confirm"})
End With
End Sub
Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
If CType(DataGridView1.Rows(e.RowIndex).Cells("Confirm").Value, Boolean) Then
DataGridView1.Rows(e.RowIndex).Cells("Confirm").Value = False
Else
DataGridView1.Rows(e.RowIndex).Cells("Confirm").Value = True
End If
Validate()
End Sub
End Class
推荐阅读
- android - 找不到 ActivityCompatApi23 无法访问 ActivityCompatApi23 类文件
- java - GridLayout 约束不起作用
- python - 熊猫集团通过制作系列;不是 groupby 对象
- mongodb - Mongodb Schema 使用 mongoose
- javascript - 如何停止加载下一页
- laravel-5.2 - laravel 每个套接字地址只使用一次
- javascript - 如何在 javascript 函数中使用 PHP $_SESSION?
- javascript - 重定向之前的节点/快递暂停
- python - _make_train_function (Keras) 中不支持 ValueError 无值
- javascript - 如何从浏览器的“查看页面源”功能中删除链接?