我有一个DataGridView,根据通过其他控件设置的过滤器来选择/取消选择行。这种选择只是程序化的。如何阻止用户更改这些选择?
答案 0 :(得分:1)
我想通过告诉你保留DataGridView1.Enabled = False
来回答,这可能会根据你的需要而有效,但你可能会失去一些视觉效果(比如灰色DataGridView
)。
设置DataGridView1.ReadOnly = True
也无济于事。
所以下面的代码不是一个完美的解决方案,但更像是一个解决方法来获得你想要的(现在测试和完全工作):
Dim SelectedRows As List(Of DataGridViewRow) = New List(Of DataGridViewRow)
Private Sub DataGridView1_MouseDown(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseDown
For Each Rows As DataGridViewRow In DataGridView1.SelectedRows
SelectedRows.Add(Rows) 'Add all the rows pre-defined by your code
Next
End Sub
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
DataGridView1.ClearSelection() 'clear the selection
For Each rs As DataGridViewRow In SelectedRows
rs.Selected = True 'restore the previous selected rows
Next
End Sub
Private Sub DataGridView1_RowHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.RowHeaderMouseClick
DataGridView1.ClearSelection() 'clear the selection
For Each rs As DataGridViewRow In SelectedRows
rs.Selected = True 'restore the previous selected rows
Next
End Sub
答案 1 :(得分:0)
我不确定是否可以(没有自定义DataGridView)使其保持启用状态(以便查看选择)并避免允许用户选择行。 但是,您可以存储您的选择,即列表(int16)并处理CellClick等事件并重新读取,并且每次用户在DataGridView中单击时,重置列表中的选择。希望它对用户来说甚至不会引起注意,但无论哪种方式都不允许他修改选择。