Der Standardstil für den Zeilenkopf bereits festgelegt werden sollten, wenn Sie Ihre DataGridView
bauen. So würde ich verwenden:
if (/*I want to change this row */)
{
DataGridViewCellStyle rowStyle; // = Grid.RowHeadersDefaultCellStyle;
rowStyle = Grid.Rows[i].HeaderCell.Style;
rowStyle.BackColor = Color.Wheat;
Grid.Rows[i].HeaderCell.Style = rowStyle;
}
So können Sie Ihre rowStyle
mit dem vordefinierten Stil füllen und dann nur den Teil, den Sie ändern möchten ändern. Sehen Sie, ob dies Ihr Problem löst.
// BEARBEITEN Da Sie die anderen Stylings des Standard-Windows DataGridView beibehalten möchten, müssten Sie auch mehr der anderen Parameter des Stils festlegen. Siehe this post.
Oder versuchen Sie es. Wenn initialiazing:
dataGridView1.CellPainting +=
new DataGridViewCellPaintingEventHandler (dataGridView_CellPainting);
dann wie die Handler-Funktion mit etwas schaffen:
void dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
DataGridView dv = sender as DataGridView;
DataGridViewCellStyle rowStyle;// = dv.RowHeadersDefaultCellStyle;
if (e.ColumnIndex == -1)
{
e.PaintBackground(e.CellBounds, true);
e.Handled = true;
if (/*I want to change this row */)
{
rowStyle = dv.Rows[e.RowIndex].HeaderCell.Style;
rowStyle.BackColor = Color.Wheat;
dv.Rows[e.RowIndex].HeaderCell.Style = rowStyle;
using (Brush gridBrush = new SolidBrush(Color.Wheat))
{
using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor))
{
using (Pen gridLinePen = new Pen(gridBrush))
{
// Clear cell
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
//Bottom line drawing
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right, e.CellBounds.Bottom - 1);
// here you force paint of content
e.PaintContent(e.ClipBounds);
e.Handled = true;
}
}
}
}
}
}
wurde auf this post. Dieser Code basiert Sie würden nur dann brauchen, um mehr Farbe Bedingungen für Mouseover- und ausgewählten Zustand zu erstellen. Aber das sollte für Sie funktionieren.
Vergessen Sie nicht, zu entfernen: Grid.EnableHeadersVisualStyles = false;
oder erzwingen Sie es: Grid.EnableHeadersVisualStyles = true;
.
Das Problem besteht darin, Grid.EnableHeadersVisualStyles auf false zu setzen. Die Zeilenköpfe ändern sich in die Farbe, aber die Spaltenüberschriften sind flach und sehen nicht so aus wie bei Grid.EnableHeadersVisualStyles auf true. Ich habe versucht, Ihre Idee für die Spalten (Holen und Zurücksetzen des Stils), aber es funktioniert nicht ... Ich werde Bilder von dem, was ich spreche – Tizz
Ich verstehe besser, was Sie sprechen jetzt mit den Bildern. Hmm. Dies ist möglicherweise nicht möglich. – CaptainBli
Sie können eine einzelne Zeile mit dem 'paint'-Handler ändern. – CaptainBli