【问题标题】:No row indentation for items in ListViewListView 中的项目没有行缩进
【发布时间】:2016-01-19 11:15:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net winforms listview


    【解决方案1】:

    您可以将ListViewOwnerDraw 属性设置为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 控件的OwnerDraw 属性文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多