c# - ListView 中的项目没有行缩进

标签 c# .net winforms listview

我目前正在开发一些软件,但客户对某个特定的 UI 更改死心塌地,这给我带来了一些麻烦:

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

The problem]

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

最佳答案

您可以设置 OwnerDraw ListView 的属性设置为 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;
}

注意:

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

关于c# - ListView 中的项目没有行缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875335/

相关文章:

c# - 对现有 ASP.NET Core Identity 应用程序进行 Azure AD 身份验证

.NET: "foreach"是命令吗?

.net - 如何测试本地化的winforms应用程序?

c# - 删除条款中的NOT-Linq-To-SQL

c# - 在 C# 中不使用 GDI+ 处理图像

c# - 在 c#.net 中通过套接字序列化和反序列化多个对象

c# attribute over main 属性

c# - ASP.NET 图表自定义标签显示 HH :MM:SS From Total Time In Seconds

.net - 如何告诉 DataContractJsonSerializer 不包含 "__type"属性

c# - 如何从sql数据库表中将数据加载到文本框中