我目前正在开发一些软件,但客户对某个特定的 UI 更改死心塌地,这给我带来了一些麻烦:
我希望 ListView 中的项目没有任何缩进。为了说明,我更改了 ListView 和项目的背景色。
现在,每个项目左侧的小块也应该是白色的。有什么想法吗?
最佳答案
您可以设置 OwnerDraw
ListView
的属性设置为 true
并使用 DrawItem
、DrawColumnHeader
和 DrawSubItem
绘制列表看看你自己。
例如:
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;
}
注意:
- 上面的呈现只是一个示例,它向您展示了如何在所需位置绘制项目文本,例如使用
Graphics.DrawString
。 . - 它还向您展示了如何设置
e.DrawDefault = true;
以执行默认渲染。 - 每个 ListViewItem 对象的第一个子项代表父项本身
- 为避免所有者绘制时图形闪烁的问题,覆盖
ListView
控件并将DoubleBuffered
属性设置为 true。 - 要了解更多信息,请阅读
OwnerDraw
的文档ListView
控件的属性。
关于c# - ListView 中的项目没有行缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875335/