FullRowSelect
にTrue
とSelectionMode
にMultiSelect
プロパティを設定した後、あなたが選択されているあなたのDataGridView
のどの行格納するのにList
を使用することができます。それはList
に含まれてRowsRemoved
にあなたがList
をクリアする必要があります場合は、行を選択することができますCellClick
あなたが/追加することができますRowPostPaint
に、あなたの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