【问题标题】:ListView DrawColumnHeader is not workingListView DrawColumnHeader 不起作用
【发布时间】:2015-11-22 19:53:40
【问题描述】:

我有以下方法为列表视图的列标题设置背景颜色和字体,但它不起作用。有人可以帮帮我吗?

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    using (StringFormat sf = new StringFormat())
    {
        // Store the column text alignment, letting it default
        // to Left if it has not been set to Center or Right.
        switch (e.Header.TextAlign)
        {
            case HorizontalAlignment.Center:
                sf.Alignment = StringAlignment.Center;
                break;
            case HorizontalAlignment.Right:
                sf.Alignment = StringAlignment.Far;
                break;
        }

        // Draw the standard header background.
        e.DrawBackground();

        // Draw the header text.
        using (Font headerFont = new Font("Helvetica", 25, FontStyle.Bold)) //Font size!!!!
        {
            e.Graphics.DrawString(e.Header.Text, headerFont, Brushes.Black, e.Bounds, sf);
        }
    }
    return;
}

我是否使用这种方法都没有关系。它保持不变。没有什么变化。 是不是因为列表视图的属性?

【问题讨论】:

  • 不工作还不够!请解释/描述问题!!如果是的话,还要标记 Winforms!
  • 你设置OwnerDraw = true; ???
  • 谢谢哥们。 “OwnerDraw = true”修复了它。
  • 但这一次,列表视图变成了空的。它必须包含我的列表视图项??
  • 大声笑。确实。您需要添加其他两个事件,请参阅我的答案..

标签: c# winforms listview


【解决方案1】:

您的代码看起来不错。如果它没有做任何事情,您忘记将OwnerDraw 属性设置为true

这也意味着您需要其他两个绘制事件添加代码。默认操作将执行:

private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
    e.DrawDefault = true;
}


private void listView1_DrawSubItem(object sender, DrawListViewItemEventArgs e)
{
    e.DrawDefault = true;
}

别忘了hook up 活动 ;-)

【讨论】:

  • @a-f-a 当一个答案帮助你解决问题并且你接受它时,你也可以考虑voting it up,虽然不是强制性的,但它是合理的:)
  • 是的。我会及时学习这种东西。我是新来的:)
猜你喜欢
  • 2013-12-11
  • 2017-07-07
  • 2014-07-28
  • 2017-01-28
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多