DataGridView mit Buttons, Text auf den Buttons ändern

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Montoyafan.

    DataGridView mit Buttons, Text auf den Buttons ändern

    Hallo, ich möchte in ein DataGridView eine Spalte mit Buttons einfügen und dann deren Beschriftung ändern.

    VB.NET-Quellcode

    1. Dim dt As DataTable = New DataTable
    2. dt.Columns.Add("ID", GetType(System.Int32))
    3. dt.Columns.Add("Name", GetType(System.String))
    4. dt.Columns.Add("Test", GetType(System.String))
    5. Dim dr As DataRow = dt.NewRow
    6. dr!ID = 1 dr!Name = "Arno" dr!Test = "Test1" dt.Rows.Add(dr)
    7. dr = dt.NewRow
    8. dr!ID = 2 dr!Name = "Peter" dr!Test = "Test2" dt.Rows.Add(dr)
    9. dr = dt.NewRow
    10. dr!ID = 3 dr!Name = "Karl" dr!Test = "Test3" dt.Rows.Add(dr)
    11. dr = dt.NewRow
    12. dr!ID = 4 dr!Name = "Julia" dr!Test = "Test4" dt.Rows.Add(dr)
    13. dr = dt.NewRow
    14. dr!ID = 5 dr!Name = "Irina" dr!Test = "Test5" dt.Rows.Add(dr)
    15. Dim myButton As New DataGridViewButtonColumn
    16. myButton.HeaderText = "Klick hier"
    17. myButton.Name = "btn"
    18. myButton.Text = "Klick mich"
    19. myButton.UseColumnTextForButtonValue = True
    20. dgView.DataSource = dt
    21. dgView.Columns.Add(myButton)


    Wie man sehen kann, klappt das auch



    Anklicken der Buttons klappt auch



    VB.NET-Quellcode

    1. For i As Integer = 0 To Me.dgView.Rows.Count - 1
    2. If dgView.Rows(i).Cells("Name").Value = "Karl" Then
    3. dgView.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
    4. dgView.Rows(i).Cells("btn").Value = "Klick Karl"
    5. Else
    6. dgView.Rows(i).DefaultCellStyle.BackColor = Color.White
    7. End If
    8. Next


    Hier das Ergebnis



    Das Einfärben der Zeile geht, der Text auf dem Button ändert sich nicht!

    Auch dieser Code funktioniert nicht

    VB.NET-Quellcode

    1. For i As Integer = 0 To Me.dgDataTakerBatchdruck.Rows.Count - 1
    2. If dgDataTakerBatchdruck.Rows(i).Cells("Name").Value = "Karl" Then
    3. dgDataTakerBatchdruck.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
    4. Dim cel As New DataGridViewButtonCell
    5. 'retrieve clicked cell
    6. cel = CType(dgDataTakerBatchdruck.Rows(i).Cells(3), DataGridViewButtonCell)
    7. 'change value property
    8. cel.Value = "Klick Karl"
    9. Else
    10. dgDataTakerBatchdruck.Rows(i).DefaultCellStyle.BackColor = Color.White
    11. End If
    12. Next
    13. Das waren die Dinge, die ich beim Googeln und auf Youtube gefunden hatte. Hat jemand eine Idee, wie das klappen kann?
    14. lg Arno


    blocked link an dieser Stelle entfernt ~VaporiZed
    Bilder
    • DGV_1.jpg

      19,9 kB, 642×250, 110 mal angesehen
    • DGV_2.jpg

      25,81 kB, 756×255, 134 mal angesehen
    • DGV_4.jpg

      20,84 kB, 650×250, 21 mal angesehen
    • DGV_3.jpg

      21,05 kB, 643×247, 130 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden, denn If dgView.Rows(i).Cells("Name").Value = "Karl" Then ist Option Strict Off.

    Dein verlinktes GoogleDriveProjekt ist gesperrt. Bitte Link entfernen und Projekt ggf. über + Erweiterte Antwort hochladen.

    Das Problem ist: myButton.UseColumnTextForButtonValue = True. Damit legst Du fest, dass immer die Spaltenüberschrift als Text verwendet wird. Du musst also für jeden Button anfangs selbst den Text festlegen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke für Deine Hilfe. Das Entfernen von 'myButton.UseColumnTextForButtonValue = True' hat geholfen.

    Der Link auf Google Drive ist entstanden beim Versuch, die Bilder anzuzeigen. Ich kann ihn im Bearbeiten - Modus nicht mehr sehen und auch nicht entfernen.

    Bei meinem nächsten Projekt werde ich Option Strict On benutzen.