这是一个完整的示例,其中 DataGridViewColumns 在 IDE 中创建,因此没有显示它们正在创建的代码。
''' <summary>
''' DataGridView columns were created in the IDE
''' </summary>
''' <remarks></remarks>
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.Rows.Add(New Object() {"John", "USA", True})
DataGridView1.Rows.Add(New Object() {"Mike", "AU", False})
DataGridView1.Rows.Add(New Object() {"Jack", "EU", True})
DataGridView1.Rows.Add(New Object() {"Mike", "AU", False})
End Sub
Private Sub DataGridView1SelectAll_CurrentCellDirtyStateChanged(
ByVal sender As Object,
ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
RemoveHandler DataGridView1.CurrentCellDirtyStateChanged,
AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
If TypeOf DataGridView1.CurrentCell Is DataGridViewCheckBoxCell Then
DataGridView1.EndEdit()
Dim Checked As Boolean = CType(DataGridView1.CurrentCell.Value, Boolean)
If Checked Then
MessageBox.Show("You have checked")
Else
MessageBox.Show("You have un-checked")
End If
End If
AddHandler DataGridView1.CurrentCellDirtyStateChanged,
AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
End Sub
End Class
这是一种语言扩展方法,它也很有帮助,通过按下按钮,您可以获得所有已检查的行。它很容易调整,以便您可以要求选中或未选中的行。
Module Module1
<System.Diagnostics.DebuggerStepThrough()> _
<Runtime.CompilerServices.Extension()> _
Public Function GetCheckedRows1(
ByVal GridView As DataGridView,
ByVal ColumnName As String) As List(Of DataGridViewRow)
Return _
(
From SubRows In
(
From Rows In GridView.Rows.Cast(Of DataGridViewRow)()
Where Not Rows.IsNewRow
).ToList
Where CBool(SubRows.Cells(ColumnName).Value) = True
).ToList
End Function
End Module
用法
Dim rowsCheckedList As List(Of DataGridViewRow) =
DataGridView1.GetCheckedRows1("ProcessColumn")
另请参阅我的MSDN code samples 关于此主题。它们是在 VS2013 中完成的,如果使用较低的版本,您仍然可以在线查看代码。