C# Windows 窗体 ListView 在按宽度自动调整大小 = -1 后获取列的实际宽度?
Posted
技术标签:
【中文标题】C# Windows 窗体 ListView 在按宽度自动调整大小 = -1 后获取列的实际宽度?【英文标题】:C# Windows Forms ListView get columns real width after autoresize by width = -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/***.png
是的。 20 - 1 = 19
。仔细检查您在做什么并仔细阅读第二条评论。
【参考方案1】:
使用ColumnHeader.AutoResizeColumns(ColumnHeaderAutoResizeStyle style)
即可。
然后ColumnHeader.Width属性返回实际宽度。
【讨论】:
以上是关于C# Windows 窗体 ListView 在按宽度自动调整大小 = -1 后获取列的实际宽度?的主要内容,如果未能解决你的问题,请参考以下文章