DataGridView Spalte mit Bitmap füllen / leer lassen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    DataGridView Spalte mit Bitmap füllen / leer lassen

    Hi,

    ich habe eine Datagridview, in der ich Eigenschaften von Files anzeigen möchte.

    Wenn der File mit .ico endet, dann will ich in der ersten Spalte die entsprechende Bitmap anzeigen.

    Andernfalls soll die erste Spalte einfach leer gelassen werden.

    Ich hab das wie folgt versucht:

    VB.NET-Quellcode

    1. If RealWorkFileList(i).ToUpper.EndsWith(".ICO") Then
    2. Dim realBitmap As New Bitmap(RealWorkFileList(i))
    3. dgvFiles.Rows.Add(realBitmap, ...)
    4. Else
    5. dgvFiles.Rows.Add(nothing, ...)
    6. End If


    Das Befüllen mit der Bitmap klappt. Allerdings wenn dgvFiles.Rows.Add(nothing, ... ausgeführt wird, dann erscheint in der ersten Spalte ein Rechteck mit einem roten Kreuz.

    Wie schon gesagt, ich würde das mit dem "roten Kreuz" gern unterdrücken und halt eine leere Zelle anzeigen. Geht das? Und wenn ja, wie mache ich das ...

    LG
    Peter
    Ich nutze immer das DataGridViewCellFormatting-Event.

    VB.NET-Quellcode

    1. Private bmp as new Bitmap("FileName")
    2. Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    3. If e.DesiredType = GetType(Image) Then
    4. If e.Value Is Nothing Then
    5. e.Value = bmp
    6. End If
    7. End If
    8. End Sub

    And i think to myself... what a wonderfuL World!
    okie dokie ... einfach "leer" lassen geht also nicht. Ich muss ein "error image" erstellen und das entweder explizit über die Programmlogik bzw. über das "CellFormattingEvent" zuweisen.

    Na gut, dann mach ich das so. Vielen Dank an die Ratgeber.

    Schöner wäre es natürlich schon, wenn man ein error image in den Eingeschaften der DatagridView einstellen könnte. Aber dazu hab ich nix passendes gefunden ... vielleicht hat jemand ja doch noch eine Idee.

    LG
    Peter
    @Peter329 Ich hab das eben mal an einem andern Beispiel getestet:

    C#-Quellcode

    1. dataGridView1.Rows.Add();
    2. dataGridView1.BeginEdit(row != 0);
    3. dataGridView1.Rows[row].Cells[0].Value = new Bitmap(1, 1);//setImage(index); // Nix oder Bild
    4. dataGridView1.Rows[row].Cells[1].Value = name;
    5. dataGridView1.EndEdit();
    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!