ListView中的项没有行缩进

时间:2016-01-19 11:15:44

标签: c# .net winforms listview

我目前正在开发一些软件,而且客户对于特定的UI更改已经死定,这给我带来了一些麻烦:

我希望ListView中的项目没有任何缩进。为了说明我更改了ListView和项目的背景颜色。

The problem]

现在,每个项目左边的小块也应该是白色的。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以将ListView的{​​{3}}属性设置为true,然后使用DrawItemDrawColumnHeaderDrawSubItem自行绘制列表视图。

例如:

private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
    e.Graphics.DrawString(e.Item.Text, e.Item.Font, Brushes.Black, 
         new Rectangle(e.Bounds.Left-2, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height));
}

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    e.DrawDefault = true;
}

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    if(e.ColumnIndex>0)
        e.DrawDefault = true;
}

注意:

  • 以上渲染只是一个示例,并向您展示如何使用OwnerDraw在所需位置绘制项目文本。
  • 此外,它还向您展示如何设置e.DrawDefault = true;以执行默认渲染。
  • 每个ListViewItem对象的第一个子项表示父项本身
  • 要避免在所有者绘制时出现图形闪烁问题,请覆盖ListView控件并将DoubleBuffered属性设置为true。
  • 要了解详情,请阅读ListView控件Graphics.DrawString属性的文档。