2017-09-18 86 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

相關問題