デフォルトのDataGridViewCheckBoxCell
を色付きの長方形で上書きしようとしています。CellPaintingのDataGridViewCheckBoxCellバックカラーを変更する
私は、次の記事を見つけましたが、期待どおりに動作しない:ここでは Drawing a filled circle or rectangle inside a DataGridViewCell in C# Winforms
は私のコードです:
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;
}
}
}
初めてロードした後、全てチェックした細胞は灰色背景色を持っています。これは、datagridviewをスクロールした後に消えてから消えます。
イラスト:また、私はFullRowSelectへのDataGridViewのselectionMode設定
:
OrdersComponentsDGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
をしかし、上述したように、私はCellPainting
を実装した後、青色選択背景色がなくなっている(画像に表示)チェックボックスがオンになっています。
はあなたに@Ashをありがとう、それは二つの問題を解決しました。 – ehh