Как изменить стиль текста заголовка ListView в Windows Froms (C#) - PullRequest
0 голосов
/ 04 августа 2020

Это мой код, чтобы сделать только заголовок listView жирным, но он не работает, потому что не только заголовок, но и все элементы становятся жирными.

listView.Columns[0].ListView.Font = new Font(listView.Columns[0].ListView.Font, FontStyle.Bold);

У кого-то есть решение ?

1 Ответ

0 голосов
/ 05 августа 2020

К сожалению, вы не можете изменить шрифт заголовка. Но вы можете изменить шрифт для каждого отдельного элемента списка. Простой, но хакерский подход - установить ListView.Font на полужирный шрифт и изменить шрифт каждого ListItem.Font на шрифт по умолчанию.

listView.Font = _headerFont;
foreach(ListViewItem item in listView.Items)
{
    item.Font = SystemFonts.DefaultFont;
}

В качестве альтернативы для полного контроля установите OwnerDraw свойство true и обрабатывать как DrawColumnHeader, так и DrawItem события, как показано ниже:

public partial class Form1 : Form
{
    private readonly Font _headerFont = new Font(SystemFonts.DefaultFont, FontStyle.Bold);

    public Form1()
    {
        InitializeComponent();
        listView.OwnerDraw = true;
        listView.DrawColumnHeader += DrawColumnHeader;
        listView.DrawItem += DrawItem;
    }

    private void DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
    {
        // Draw default background
        e.DrawBackground();

        // Draw text in a different font
        TextRenderer.DrawText(e.Graphics,
            e.Header.Text,
            _headerFont,
            e.Bounds,
            SystemColors.ControlText,
            TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
    }

    private void DrawItem(object sender, DrawListViewItemEventArgs e)
    {
        // Use defaults for Items
        e.DrawDefault = true;
    }
}

В приведенном выше примере показано, как это работает, но в реальном приложении вы также должны рисовать в зависимости от состояния элемента, как в более подробном примере в. NET docs

...