Ich versuche, den Standard DataGridViewCheckBoxCell
mit einem farbigen Rechteck zu überschreiben.Ändern von DataGridViewCheckBoxCell Hintergrundfarbe in CellPainting
ich folgenden Beitrag gefunden, aber es so nicht verhalten erwartet: Drawing a filled circle or rectangle inside a DataGridViewCell in C# Winforms
Hier ist mein Code: zum ersten Mal
private void OrdersComponentsDGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex > 0)
{
const float size = 20;
var datagridview = (sender as DataGridView);
var cell = datagridview.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (cell.Value != DBNull.Value && (bool)cell.Value)
{
// center of the cell
var x = e.CellBounds.X + e.CellBounds.Width/2 - size/2;
var y = e.CellBounds.Y + e.CellBounds.Height/2 - size/2;
RectangleF rectangle = new RectangleF(x, y, size, size);
e.Graphics.FillRectangle(Brushes.Yellow, rectangle);
e.PaintContent(e.CellBounds);
e.Handled = true;
}
}
}
Nach dem Laden, haben alle überprüft Zellen eine graue Hintergrundfarbe . Es verschwindet nach dem Scrollen der Datagridview nach unten und nach oben zurück.
Darüber hinaus habe ich das Datagridview Selection zu FullRowSelect gesetzt:
OrdersComponentsDGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
Aber nachdem ich CellPainting
implementieren, wie oben beschrieben, die blaue Auswahl Hintergrundfarbe wird in dem Bild verschwunden (siehe) wo das Kontrollkästchen aktiviert ist.
Danke @Ash es die beiden Probleme gelöst. – ehh