默认情况下,我已更改列标题颜色。现在,我想在排序时更改 Windows Form C# 的 DataGridView 中的“排序字形图标”颜色:
见上图。该列已排序,但图标的颜色使其可见性不足。
请让我知道它的颜色是否可以更改。谢谢!
默认情况下,我已更改列标题颜色。现在,我想在排序时更改 Windows Form C# 的 DataGridView 中的“排序字形图标”颜色:
见上图。该列已排序,但图标的颜色使其可见性不足。
请让我知道它的颜色是否可以更改。谢谢!
没有用于更改排序图标颜色的属性。作为更改它的选项,您可以CellPainting
自己处理事件并绘制单元格。
例子
private void dgv1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
var grid = (DataGridView)sender;
var sortIconColor = Color.Red;
if (e.RowIndex == -1 && e.ColumnIndex > -1)
{
using (var b = new SolidBrush(BackColor))
{
//Draw Background
e.PaintBackground(e.CellBounds, false);
//Draw Text Default
//e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground);
//Draw Text Custom
TextRenderer.DrawText(e.Graphics, string.Format("{0}", e.FormattedValue),
e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
//Draw Sort Icon
if (grid.SortedColumn?.Index == e.ColumnIndex)
{
var sortIcon = grid.SortOrder == SortOrder.Ascending ? "▲":"▼";
//Or draw an icon here.
TextRenderer.DrawText(e.Graphics, sortIcon,
e.CellStyle.Font, e.CellBounds, sortIconColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}
//Prevent Default Paint
e.Handled = true;
}
}
}
绘制视觉样式排序图标
要查看带有视觉样式排序图标的绘图,请查看这篇文章。