2017-09-18 117 views
0

我在第一列中有一个包含复选框的DataGridView。如何确定是否选中了datagridview上的一个复选框,并且是否全部未选中

我需要检查是否只选中了一个复选框或者没有选中复选框。

循环虽然DataGridView会给我真和假,因为每个盒子都被检查和取消选中,这是我试图用下面的代码。

我需要创建一个方法,如果其中一个框为check,则返回true,如果没有选中框,则返回false。

我试过了:调用它和实验是不同的相关的DataGridView点击事件。

Public Function IsContainChecked() As Boolean 

    Dim ch1 As New DataGridViewCheckBoxCell() 
    ch1 = DirectCast(DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(0), _ 
     DataGridViewCheckBoxCell) 
    Return CBool(ch1.EditingCellFormattedValue) 

End Function 
+0

你为什么需要直接投射物体? –

+0

不要在新的东西上重新分配它。最近看到的方式太多了。 – pinkfloydx33

回答

-1
Dim checkedCount = DataGridView1.Rows. 
           Cast(Of DataGridViewRow)(). 
           Where(Function(row) Not row.IsNewRow). 
           Count(Function(row) CBool(row.Cells(0).Value)) 

Select Case checkedCount 
    Case 0 
     'No rows are checked. 
    Case 1 
     'One row is checked. 
    Case Else 
     'More than one row is checked. 
End Select 

你可以把代码中的方法,并调用它你喜欢的地方,例如在CellValueChanged事件处理程序中。请注意,复选框单元格的Value单击时不会立即更改。活动的文档解决了这个问题,并解释了如果您想强制点击更改Value时应采取的措施。

+0

...... ***这是如何解释OP的问题***?抛出一个答案,没有解释原来的帖子是无奈,因为OP不明白他们有什么问题... – Codexer

+0

@Codexer,鉴于OP已经接受了答案,我想你可以问他们这个问题。 – jmcilhinney

相关问题