【问题标题】:C# Windows Forms ListView get columns real width after autoresize by width = -1?C# Windows 窗体 ListView 在按宽度自动调整大小 = -1 后获取列的实际宽度?
【发布时间】:2021-04-04 07:18:25
【问题描述】:

我已经通过 WinForms ListView 控件上的一些自动列 (ColumnHeader) 宽度。

Width = -1 根据内容宽度设置自动宽度,根据标题和内容设置 -2。 但是我找不到任何方法来获得自动计算的宽度,然后由-1/-2 设置。 ColumnHeader 项目的宽度属性返回 -1。

有没有办法通过将属性设置为 -1/-2 来获得以像素为单位的实际宽度?

谢谢!

【问题讨论】:

  • 在分配 -1-2 值后立即读取 ColumnHeader.Width 属性。它将返回实际宽度。
  • 使用ColumnHeader.AutoResize()方法设置大小模式,意思就清楚多了。 ColumnHeader 的Width 属性始终返回在本机控件中设置的值(通过SendMessage -> LVM_GETCOLUMNWIDTH):它始终返回以像素为单位的大小。
  • @dr.null 它不会返回实际宽度。将 20 添加到宽度将导致宽度 19。请参见此处:i.ibb.co/w0jZwF6/stackoverflow.png
  • 是的。 20 - 1 = 19。仔细检查您在做什么并仔细阅读第二条评论。

标签: c# winforms listview width


【解决方案1】:

使用ColumnHeader.AutoResizeColumns(ColumnHeaderAutoResizeStyle style) 即可。

然后ColumnHeader.Width属性返回实际宽度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多