Icon Column

  • VB.NET
  • .NET (FX) 4.0

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

    Icon Column

    Hallo Forum,

    habe eine DGV mit Cellstyle.BackColor nach bestimmten Kriterium über cellFormating. Das funktioniert auch Super.

    nun möchte ich statt BackColor eine ImageColumn mit Icon füllen.

    Wer kann mir da weiterhelfen?

    hier mal das CellFormating, die ImageColumn würde ich der DGV manuell hinzufügen, aber weiß gerade nicht wie ich die dann korrekt fülle mit entsprechendem Symbol (Icon) aus ImageList

    VB.NET-Quellcode

    1. Private Sub dgv_LV_Artikelbestand_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgv_LV_Artikelbestand.CellFormatting
    2. If e.RowIndex = (-1) Then Return
    3. If e.Value Is DBNull.Value Then Return
    4. If e.Value Is Nothing Then Return
    5. If e.ColumnIndex = col_LV_AB_Gesamtanzahl.Index Then
    6. Dim idx_Zeile As Integer = e.RowIndex
    7. Dim idx_Meldeschwelle As Integer = col_LV_AB_Meldeschwelle.Index
    8. Dim cell_Meldeschwelle As DataGridViewCell = dgv_LV_Artikelbestand.Rows(idx_Zeile).Cells(idx_Meldeschwelle)
    9. Dim idx_Mindestbestand As Integer = col_LV_AB_Mindestbestand.Index
    10. Dim cell_Mindestbestand As DataGridViewCell = dgv_LV_Artikelbestand.Rows(idx_Zeile).Cells(idx_Mindestbestand)
    11. Dim val_Gesamtanzahl As Integer = CInt(e.Value)
    12. Dim val_Meldeschwelle As Integer = CInt(cell_Meldeschwelle.Value)
    13. Dim val_Mindestbestand As Integer = CInt(cell_Mindestbestand.Value)
    14. If val_Gesamtanzahl < val_Mindestbestand AndAlso val_Gesamtanzahl > val_Meldeschwelle Then
    15. e.CellStyle.BackColor = Color.Yellow 'statt BackColor ein Icon aus Imagelist
    16. e.CellStyle.ForeColor = Color.Black
    17. Return
    18. End If
    19. If val_Gesamtanzahl <= val_Meldeschwelle Then
    20. e.CellStyle.BackColor = Color.Red 'statt BackColor ein Icon aus Imagelist
    21. e.CellStyle.ForeColor = Color.White
    22. Return
    23. End If
    24. If val_Gesamtanzahl >= val_Mindestbestand Then
    25. e.CellStyle.BackColor = Color.Green 'statt BackColor ein Icon aus Imagelist
    26. e.CellStyle.ForeColor = Color.Black
    27. Return
    28. End If
    29. End If
    30. End Sub

    menorca schrieb:

    mit entsprechendem Symbol (Icon) aus ImageList
    Du brauchst zunächst eine Spalte vom Typ Image:

    VB.NET-Quellcode

    1. ' für das DataGridView1 'XBitmap
    2. Me.table.Columns.Add(New DataColumn() With { _
    3. .ColumnName = "Image", _
    4. .DataType = GetType(Image) _
    5. })
    und dann befüllen:

    VB.NET-Quellcode

    1. ' Schleife über i
    2. Dim newRow As DataRow = Me.table.NewRow()
    3. newRow(MyTable.Coordinate) = i ' andere Spalten
    4. newRow(MyTable.Value) = Math.Sin(i / 10)
    5. If i Mod 2 = 0 Then ' jede zweite Zeile anders
    6. newRow(MyTable.Image) = My.Resources.Image1
    7. Else
    8. newRow(MyTable.Image) = My.Resources.Image2
    9. End If
    10. Me.table.Rows.Add(newRow)

    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!
    Danke euch beiden für die Antworten.

    aber ihr befüllt so doch nicht wie in meinem Code nach Kriterium sondern Rod befüllt jede zweite Zeile mit Icon1 und Icon2

    Erfinder des Rades befüllt ähnlch dort liest er 3 verschiedene Icon ein

    ich habe da so im Code ersichtlich eine Berechnung für BackColor, meine Frage war wie kann ich zu den ein entsprechendes Icon zuweisen

    menorca schrieb:

    jede zweite Zeile
    ist doch ein

    menorca schrieb:

    Kriterium
    , wenn auch ein anderes als Deins.
    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!
    Hey Forum,

    Sorry, muss mich bei euch EDR und Rod Entschuldigen.

    Der Groschen ist gefallen, mittlerweile konnte ich das "relativ einfach" umsetzen
    habe die Icons drin, und kann das ganze sogar drucken.

    Also noch mal Entschuldigung und Danke