删除左 ListView 边框和列项之间的 space
Remove space between left ListView border and column items
我用
为第一 ListView
列的一些项目着色
foreach (ListViewItem lvi in listView.Items)
{
lvi.UseItemStyleForSubItems = false;
lvi.SubItems[0].BackColor = Color.DarkMagenta;
}
并尝试消除左 ListView
边框和列项之间的空隙。
设置listView.Padding
没有效果,ColumnHeader
class既没有BackColor
属性也没有Margin
属性可以设置为零以下。
Owner-Drawing会让你随心所欲地绘制整个项目背景。
listView1.OwnerDraw = true;
这是一个简单的最小示例:
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
using (Brush brush = new SolidBrush(
(e.State.HasFlag(ListViewItemStates.Focused)) ?
SystemColors.Highlight : e.Item.BackColor))
e.Graphics.FillRectangle(brush, e.Bounds);
e.DrawText();
}
请注意,一旦您的所有者抽取了物品,您还需要 owner-draw sub-items 和 headers,即使您只使用默认设置:
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
e.DrawDefault = true;
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}
我用
为第一ListView
列的一些项目着色
foreach (ListViewItem lvi in listView.Items)
{
lvi.UseItemStyleForSubItems = false;
lvi.SubItems[0].BackColor = Color.DarkMagenta;
}
并尝试消除左 ListView
边框和列项之间的空隙。
设置listView.Padding
没有效果,ColumnHeader
class既没有BackColor
属性也没有Margin
属性可以设置为零以下。
Owner-Drawing会让你随心所欲地绘制整个项目背景。
listView1.OwnerDraw = true;
这是一个简单的最小示例:
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
using (Brush brush = new SolidBrush(
(e.State.HasFlag(ListViewItemStates.Focused)) ?
SystemColors.Highlight : e.Item.BackColor))
e.Graphics.FillRectangle(brush, e.Bounds);
e.DrawText();
}
请注意,一旦您的所有者抽取了物品,您还需要 owner-draw sub-items 和 headers,即使您只使用默认设置:
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
e.DrawDefault = true;
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}