Laden...

DataGridView: Image für Button in DataGridViewButtonCell

Erstellt von Doommortar vor 5 Jahren Letzter Beitrag vor 5 Jahren 862 Views
D
Doommortar Themenstarter:in
27 Beiträge seit 2008
vor 5 Jahren
DataGridView: Image für Button in DataGridViewButtonCell

Hallo zusammen,

ich habe ein DataGridView in dem eine DataGridViewButtonColumn enthalten ist.
In jeder Zeile soll jetzt ein Bild (Drucker Symbol) auf den Button gezeichnet werden. Das Bild wird aus einer ImageList geladen.

Ich habe folgenden Code der unter Win XP problemlos funktioniert.


private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
     if (e.ColumnIndex == this.Column1.Index && 0 <= e.RowIndex && e.RowIndex < this.dataGridView1.RowCount)
     {
           e.Handled = true;
           e.PaintBackground(e.CellBounds, (e.State & DataGridViewElementStates.Selected) > 0);
           Image Img = this.imageList1.Images[0];
                
           // Formatierung: Grafik immer quadratisch und mittig mit kleinem Rand
           e.Graphics.DrawImage(Img, e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Height, e.CellBounds.Height);
           e.PaintContent(e.CellBounds);
     }
}

Leider werden die Bilder nicht unter Win 10 gezeichnet (siehe Anhang). Es wird nur eine graue Schaltfläche gezeichnet. Ich habe das Gefühl dass das Bild hinter dem grauen Bereich gezeichnet wird.

Was muss ich machen das es auch unter Win 10 funktioniert?

Vielen Dank für eure Hilfe!

Gruß Doommortar

4.942 Beiträge seit 2008
vor 5 Jahren

Du hast einmal e.CellBounds.Height anstatt e.CellBounds.Width in deinem Code - aber das dürfte nicht der Fehler sein.

Kannst du denn andere Objekte dort zeichnen (z.B. eine Linie oder Kreis)?

Oder verhindert das (m.E. überflüssige) e.PaintContent(e.CellBounds) die Sichtbarkeit des Bildes?

D
Doommortar Themenstarter:in
27 Beiträge seit 2008
vor 5 Jahren

Das e.PaintContent(e.CellBounds) war die Ursache.

Vielen Dank für deine Hilfe da wäre ich nie drauf gekommen.