Как изменить цвет "значок сортировки глифа" в 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;
        }
    }
}
Другие вопросы по тегам