2017-09-18 6 views
0

Ich habe eine DataGridView mit Kontrollkästchen in der ersten Spalte.So ermitteln Sie, ob ein Kontrollkästchen in einer Datagridansicht aktiviert ist und ob alle Optionen deaktiviert sind

Ich muss überprüfen, ob nur ein Kontrollkästchen aktiviert wurde oder ob keine Kontrollkästchen aktiviert sind.

Durchschleifen, obwohl das DataGridView mir wahr und falsch gibt, wie jede Box aktiviert und deaktiviert wird, was ich mit dem folgenden Code versucht habe.

Ich muss eine Methode erstellen, die True zurückgibt, wenn eines der Kontrollkästchen aktiviert ist und false, wenn kein Kontrollkästchen aktiviert ist.

Ich habe Folgendes versucht: Aufruf und Experiment ist anders in Bezug auf DataGridView Klickereignis.

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

Warum müssen Sie das Objekt direkt umwandeln? –

+0

Nicht "neu" etwas nur um es in der nächsten Zeile neu zuzuweisen. In letzter Zeit viel zu viel davon gesehen. – pinkfloydx33

Antwort

-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 

können Sie diesen Code in einer Methode setzen und es nennen, wo Sie möchten, zum Beispiel im Ereignishandler CellValueChanged. Beachten Sie, dass sich die Value einer Kontrollkästchenzelle nicht sofort ändert, wenn Sie darauf klicken. Die Dokumentation für das Ereignis adressiert das und erklärt, was zu tun ist, wenn Sie die Value mit einem Klick ändern möchten.

+0

Und ... *** Wie erklärt das die OP's ***? Eine Antwort ohne Erklärung des ursprünglichen Beitrags zu werfen ist hilflos, da das OP nicht versteht, wo sie ein Problem haben ... – Codexer

+0

@Codexer, vorausgesetzt, dass das OP die Antwort akzeptiert hat, denke ich, dass Sie ihnen diese Frage stellen könnten. – jmcilhinney

Verwandte Themen