2016-03-26 14 views
0

Ich bin im Moment ein Abrechnungssystem erstellen und ich habe Probleme mit der Überprüfung, ob ein Kontrollkästchen innerhalb einer datagridview überprüft wird.Wie kann ich überprüfen, ob das Kontrollkästchen in Datagridview Spalte in vb.net aktiviert ist

Mein datagridview zur Zeit enthält die folgenden Spalten:

0: Produktcode

1: Beschreibung

2: Größe

3: Kosten

4: Menge

5: Rückkehr?

(Datagrid an nichts gebunden)

Der "Return?" Spalte ist die Checkbox-Spalte. Dies ist so, dass, wenn der Benutzer Artikel zurückgibt, diese die Kontrollkästchen für jeden zurückzugebenden Artikel aktivieren können, der dann einen anderen Code ausführt, abhängig davon, ob die Kontrollkästchen aktiviert sind oder nicht.

Beispiel: Wenn der Benutzer ein Element kostet £ 20 zurückkehrt und einen Artikel zu kaufen, die 50 £ dann die Systemkosten sollten den Benutzer mit einem Gesamtpreis von £ 50 jedoch vorstellen, wenn der Benutzer sowohl dem Kauf ist Artikel dann sollte das System £ 70 ausgeben.

Dies hängt alles vom Wetter ab, oder das Kontrollkästchen für die Rückgabe ist nicht aktiviert.

Der Code, der diese Berechnung ausführt, habe ich kein Problem mit, ich habe es bereits geschrieben. Es ist jedoch der Code, der das Wetter überprüft, oder keines der Kontrollkästchen wird in der angegebenen datagridview-Spalte überprüft.

Ich nahm an, dass es ähnlich dem Code war, der für eine normale Checkbox If Checkbox1.CheckState = CheckState.Checked then ... verwendet würde, aber es ist nicht.

Ich hoffe, ich habe mein Szenario und Problem klar zu verstehen und dass jemand helfen kann, danke.

Antwort

0

Hier ist ein vollständiges Beispiel, in dem die DataGridViewColumns in der IDE erstellt werden, so dass kein Code angezeigt wird, der anzeigt, dass sie erstellt werden.

''' <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 

enter image description here

Hier ist eine Spracherweiterung Methode, die auch eine Schaltfläche, dass durch sagen Drücken Sie hilfreich sein kann, um alle Zeilen zu erhalten, die überprüft werden. Es wäre einfach einzustellen, so dass Sie nach aktivierten oder deaktivierten Zeilen fragen könnten.

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 

Nutzungs

Dim rowsCheckedList As List(Of DataGridViewRow) = 
    DataGridView1.GetCheckedRows1("ProcessColumn") 

Meine MSDN code samples zu diesem Thema auch. Sie werden in VS2013 ausgeführt und wenn Sie eine niedrigere Version verwenden, können Sie den Code online noch anzeigen.

+0

Vielen Dank Karen. Das war sehr hilfreich! – FMG97

Verwandte Themen