DataGridView mit Ckeckbox

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataGridView mit Ckeckbox

    Hallo Leute,



    ich neu hier. Also Grüße ich erst mal alle!



    Ich habe ein Problem mit DatagridView mit Checkbox.

    Wie kann ich Checkboxen wärend der Laufzeit auf True oder Fase stellen.

    Wenn die CheckBox inder zweite Spalte ist funktionierts mit.

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    2. If e.ColumnIndex <> 1 Then Exit SubDataGridView1.Rows(e.RowIndex).Cells(1).Value = Not _
    3. DataGridView1.Rows(e.RowIndex).Cells(1).ValueEnd Sub

    Ich habe die CheckBox jetzt aber in der dritten Spalte und irgentwie schaff ich es nicht sie wärend der Laufzeit auf True oder False zusetzten.
    Für eure Hilfe wäre ich sehr Dankbar!
    Hi VBuchner,

    warum willst du noch extra nen Code schreiben ? Die Checkboxen must du doch nur anklicken, damit diese ihren Hacken bekommen oder verlieren !?

    Ansonsten must du das cells(1) gegen cells(e.rowindex) austauschen.
    Die 1 in Klammern gibt ja die Spalte an, die du verändern möchtest. Wenn diese fix auf 1 steht, wird auch immer nur diese Spalte geändert. Du kannst alternativ auch den Spaltenname mit Gänsefüßchen in Klammern schreiben, falls sich an der Reihenfolge der Spalten etwas verändert, wird immer nach der Spaltenüberschrift gesucht.

    2. werden deine Änderungen durch die if Anweisung nur gemacht, wenn man in Spalte 1 klickt. Vielleicht nimmst du hier besser eine Select Case Anweisung.

    Gruß
    HerrFrie
    Hi und erstmal: VB-Tag richtig benutzen

    Und dann sollteman für sowas nie im DGV herumfummeln. Wie HerrFrie schon sagt: Wenn du in eine DataGridViewCheckbox klickst, dann schaltet sich ja das Häckchen um - da kann man mit Code nur Verwirrungstiften.

    Und wenn du Codeseitig einen Boolean-Wert eines Datensatzes ändern möchtest, dann solltest du das auch im Datensatz tun, nicht im DGV. Das DGV zeigt den neuen Wert dann schon korrekt an - andernfalls stimmt was mit dem Databinding nicht.

    Hallo Leute und vielen Dank für eure Unterstützung!!

    Zu deiner Frage: warum willst du noch extra nen Code schreiben ? Die Checkboxen must du doch nur anklicken, damit diese ihren Hacken bekommen oder verlieren !?


    Ich muss ja einen Code schreiben oder? Denn ohne Code im"CellClick" nimmt die CheckBox Spalte keine änderung wahr?
    Ich habs jetzt mit folgenden Code gelöst:

    VB.NET-Quellcode

    1. Private Sub DataGridView4_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView4.CellClick
    2. If TypeOf Me.DataGridView4.Rows(e.RowIndex).Cells(e.ColumnIndex) Is DataGridViewCheckBoxCell ThenDim dgvCheckBoxCell As DataGridViewCheckBoxCell = Me.DataGridView4.Rows(e.RowIndex).Cells(e.ColumnIndex)
    3. Me.DataGridView4.CommitEdit(DataGridViewDataErrorContexts.Commit)Dim checked As Boolean = CType(dgvCheckBoxCell.Value, Boolean)
    4. If checked = False Then
    5. dgvCheckBoxCell.Value = True
    6. Else
    7. dgvCheckBoxCell.Value = False
    8. End If
    9. End IfEnd Sub
    Ich habe in 2 Punkten den Eindruck, du nimmst nicht ernst, wassich sage:
    1. VB-Tag richtig benutzen!
      Spricht irgendetwas dagegen, das einfach mal zu tun?

    2. VBuchner schrieb:

      Zu deiner Frage: warum willst du noch extra nen Code schreiben ? Die Checkboxen must du doch nur anklicken, damit diese ihren Hacken bekommen oder verlieren !?
      Hast dus denn ühaupt mal probiert ohne Code?
      Kommentiere doch einfach mal die HandlesKlausel aus, und guck, was dann passiert - ist nur ein ' einzufügen:

      VB.NET-Quellcode

      1. Private Sub DataGridView4_CellClick( _
      2. ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
      3. ' Handles DataGridView4.CellClick

    Hi VBuchner!

    private Nachricht von VBuchner ohne Antwortmöglichkeit schrieb:

    Bitte was meinst du mit "VB-Tag richtig benutzen"
    VB-Tag richtig benutzen ist ein Link, oder ist das nicht erkenntlich?
    Manche Erläuterungen poste ich in Form von Links, weils doch blöd wäre, dieselben Erläuterungen 1000 mal immer wieder neu hinzuschreiben.

    Aber draufklicken mussman schon ;)
    Hallo ErfinderDesRades !

    Natürlich nehme ich dich ernst. Es tut mir leid ich bin mit Foren nicht wirklich vertraut, doch das wird sich ändern.

    Bitte was meinst du mit "VB-Tag richtig benutzen"

    VB.NET-Quellcode

    1. Private Sub DataGridView4_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) 'Handles DataGridView4.CellClick
    2. 'If TypeOf Me.DataGridView4.Rows(e.RowIndex).Cells(e.ColumnIndex) Is DataGridViewCheckBoxCell Then
    3. ' Dim dgvCheckBoxCell As DataGridViewCheckBoxCell = Me.DataGridView4.Rows(e.RowIndex).Cells(e.ColumnIndex)
    4. ' 'Commit the data to the datasouce.
    5. ' Me.DataGridView4.CommitEdit(DataGridViewDataErrorContexts.Commit)
    6. ' Dim checked As Boolean = CType(dgvCheckBoxCell.Value, Boolean)
    7. ' 'MessageBox.Show(checked)
    8. ' If checked = False Then
    9. ' dgvCheckBoxCell.Value = True
    10. ' Else
    11. ' dgvCheckBoxCell.Value = False
    12. ' End If
    13. 'End If
    14. End Sub


    Habe ich versucht funkt. aber nicht. Während das Programm läuft kann ich an den CheckBoxen so nichts ändern.
    Vieleicht habe ich beim Einfügen des DataGridView einen Fehler gemacht und irgentetwas vergessen!
    Was meinst du mit "was meinst du mit "VB-Tag richtig benutzen""?

    scheint doch jetzt geklappt zu haben :)

    VBuchner schrieb:

    Vieleicht habe ich beim Einfügen des DataGridView einen Fehler gemacht und irgentetwas vergessen!
    Jo, glaub auch.

    Angehängt ein Sample
    Dateien