Как изменить цвет "значок сортировки глифа" в DataGridView формы Windows C#?
Я изменил цвет заголовка столбца по умолчанию. Теперь я хочу изменить цвет "значка сортировки" в DataGridView формы Windows C#, когда он будет отсортирован:
Смотри картинку выше. Столбец отсортирован, но цвет значка делает его видимость неадекватной.
Пожалуйста, дайте мне знать, если его цвет можно изменить. Спасибо!
1 ответ
Нет свойства для изменения цвета значка сортировки. Как вариант, чтобы изменить его, вы можете обрабатывать 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
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 ? "▲":"▼";
TextRenderer.DrawText(e.Graphics, sortIcon,
e.CellStyle.Font, e.CellBounds, sortIconColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}
//Prevent Default Paint
e.Handled = true;
}
}
}