我在一個新項目上工作,該項目需要用戶在datagridview中多行選擇/取消選擇,只需在觸摸屏上輕敲一下。datagridview中的多項選擇
的形式應該是這樣的:
對於爲例,如果用戶想要刪除的行2和5,他只需要在每一行一次點擊選擇/取消選擇它們。選擇完成後,他點擊「刪除行」按鈕。
我已經嘗試玩沒有成功的CellClick事件!
有人可以有線索我該如何處理這個問題?
我在一個新項目上工作,該項目需要用戶在datagridview中多行選擇/取消選擇,只需在觸摸屏上輕敲一下。datagridview中的多項選擇
的形式應該是這樣的:
對於爲例,如果用戶想要刪除的行2和5,他只需要在每一行一次點擊選擇/取消選擇它們。選擇完成後,他點擊「刪除行」按鈕。
我已經嘗試玩沒有成功的CellClick事件!
有人可以有線索我該如何處理這個問題?
MultiSelect
屬性設置爲True
和SelectionMode
至FullRowSelect
後,您可以使用List
存儲選擇,你的DataGridView
排。
在CellClick
您可以添加/從你的List
刪除行,上RowPostPaint
您可以選擇一行,如果它包含在List
和RowsRemoved
你要清楚的List
。
Private intSelectedRows As New List(Of Integer)
Private Sub DataGridView1_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
With CType(sender, DataGridView)
Dim intRow As Integer = .CurrentRow.Index
If Not Me.intSelectedRows.Contains(intRow) Then
Me.intSelectedRows.Add(intRow)
Else
.CurrentRow.Selected = False
Me.intSelectedRows.Remove(intRow)
End If
End With
End Sub
Private Sub DataGridView1_RowPostPaint(sender As Object, e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
If Me.intSelectedRows.Contains(e.RowIndex) Then
CType(sender, DataGridView).Rows(e.RowIndex).Selected = True
End If
End Sub
Private Sub DataGridView1_RowsRemoved(sender As Object, e As System.Windows.Forms.DataGridViewRowsRemovedEventArgs) Handles DataGridView1.RowsRemoved
Me.intSelectedRows.Clear()
End Sub
如果你想明確的選擇,你可以使用此代碼:
Private Sub btnClearSelectedRows_Click(sender As System.Object, e As System.EventArgs) Handles btnClearSelectedRows.Click
For Each intSelectedRow As Integer In Me.intSelectedRows
Me.DataGridView1.Rows(intSelectedRow).Selected = False
Next intSelectedRow
Me.intSelectedRows.Clear()
End Sub
這通常是電網的正常行爲的功能,並通過按住Ctrl鍵,你左鍵單擊列標題來完成。網格屬性可能會控制選擇類型。 – DonBoitnott
由於操作員沒有鍵盤,我想要一個「模擬」CTRL鍵的功能! – Boushard