PicBox in FlowLayoutPanel mit Werten aus Datenbank

  • VB.NET

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

    PicBox in FlowLayoutPanel mit Werten aus Datenbank

    Hi ihr,

    ich bin neu hier im Forum und ich programmiere selbst auch noch gar nicht solange. Ich habe momentan ein Problem und hoffe, dass mir hier jemand weiterhelfen könnte.
    Ich habe eine Datenbank und ich möchte für jeden Wert in der Datenbank eine PictureBox in einem FlowLayoutPanel. Der Wert aus der Tabelle sollte gleichzeitig die Backgroundcolor für die PictureBox sein. Ich habe auch schon selbst einiges probiert, es funktioniert aber leider nicht so wie ich mir das vorstelle. Ich bekomme die richtige Anzahl der PictureBoxen in das Panel und sie bekommen auch schon eine Backcolor. Jedoch ist es immer die selbe Farbe, obwohl eigentlich jede PictureBox eine andere bekommen müsste. Ich hoffe mir kann jemand helfen. Hier ist mein bisheriger Code:

    VB.NET-Quellcode

    1. Private Sub flowfüllen()
    2. DataGridView1.ColumnCount = 1
    3. DataGridView1.Columns(0).Name = "erkfarbe"
    4. Dim sql100 As String = "select * from benutzer"
    5. Dim ds100 As DataSet = sqlant(sql100, 2)
    6. For i As Integer = 0 To ds100.Tables(0).Rows.Count - 1
    7. Me.DataGridView1.Rows.Add(ds100.Tables(0).Rows(i)("erkfarbe").ToString, "")
    8. Next
    9. Dim inde As Integer
    10. For Each row As DataGridViewRow In DataGridView1.Rows
    11. If Not row.IsNewRow Then
    12. Static picCount As Integer
    13. inde = DataGridView1.CurrentRow.Index
    14. Dim newPic As New PictureBox
    15. With newPic
    16. .Height = 50
    17. .Name = "Pic" + picCount.ToString()
    18. .Visible = True
    19. .BorderStyle = BorderStyle.Fixed3D
    20. .Width = 50
    21. .SizeMode = PictureBoxSizeMode.Zoom
    22. .BackColor = Color.FromArgb(DataGridView1.Rows.Item(inde).Cells(0).Value.ToString)
    23. End With
    24. FlowLayoutPanel1.Controls.Add(newPic)
    25. End If
    26. Next
    27. End Sub
    naja, inde ändert sich in der Schleife nicht, warum also sollte sich die Color ändern?

    Aber dringende Empfehlung: Visual Studio - Empfohlene Einstellungen
    Einfach befolgen, verstehen tut man das erst, wenn man gelernt hat, Datentypen zu unterscheiden. Und das lernt man nur, wenn man die Empfehlung befolgt.

    Die Voreinstellungen, mit denen du derzeit programmierst, verhindern leider ziemlich wirksam, dass du gscheit programmieren lernen kannst.
    Jou.
    @xDkpMan Willkommen im Forum. :thumbup:
    Um wieviel Einträge in der Datenbank handelt es sich denn?

    xDkpMan schrieb:

    VB.NET-Quellcode

    1. .BackColor = Color.FromArgb(DataGridView1.Rows.Item(inde).Cells(0).Value.ToString)
    machst Du

    VB.NET-Quellcode

    1. .BackColor = Color.FromArgb(CInt(row.Cells(0).Value))
    Vielleicht solltest Du eine andere Überlagerung nehmen:

    VB.NET-Quellcode

    1. PictureBox1.BackColor = Color.FromArgb(0)

    vs

    VB.NET-Quellcode

    1. PictureBox1.BackColor = Color.FromArgb(0, 0, 0)


    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „RodFromGermany“ ()

    ErfinderDesRades schrieb:


    Aber dringende Empfehlung: Visual Studio - Empfohlene Einstellungen
    Einfach befolgen, verstehen tut man das erst, wenn man gelernt hat, Datentypen zu unterscheiden. Und das lernt man nur, wenn man die Empfehlung befolgt.

    Die Voreinstellungen, mit denen du derzeit programmierst, verhindern leider ziemlich wirksam, dass du gscheit programmieren lernen kannst.

    Danke dafür :)

    RodFromGermany schrieb:

    Jou.
    @xDkpMan Willkommen im Forum. :thumbup:

    Danke :)

    RodFromGermany schrieb:


    VB.NET-Quellcode

    1. .BackColor = Color.FromArgb(CInt(row.Cells(0).Value))


    Funktioniert, super danke :D momentan sind es 7 Einträge, könnten aber noch mehr werden.

    Funktioniert, super danke!

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