Nach der Einstellung MultiSelect
Eigenschaft auf True
und SelectionMode
-FullRowSelect
können Sie eine List
verwenden zu speichern, welche Zeile Ihres DataGridView
ausgewählt ist.
Auf CellClick
Sie hinzufügen können/entfernen Zeilen aus List
, auf RowPostPaint
Sie eine Zeile auswählen können, wenn sie in der List
und auf RowsRemoved
enthalten ist haben Sie die List
löschen.
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
Wenn Sie Auswahl löschen Sie diesen Code verwenden können:
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
, die typischerweise eine Funktion der durch Halten CTRL normales Verhalten und getan wäre, wie Sie die Zeilenköpfe Grids links klicken. Eine Rastereigenschaft steuert wahrscheinlich den Auswahltyp. – DonBoitnott
Da für den Operator keine Tastatur vorhanden ist, möchte ich eine Funktion, die die CTRL-Taste "emuliert"! – Boushard