ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
Listview1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
我遇到了一个问题,因为这两行分别产生相同的结果,即同时调整 ColumnContent 和 HeaderSize 的大小。
我已经搜索过,但没有找到答案,我只需要按 HeaderSize 调整大小,但在上面的示例中,它似乎无法正常工作......或者我错过了什么?
我已经测试了多个 ListView 控件...
编辑:我这样使用它:
Private Sub UserListResize()
If Me.UserList.InvokeRequired Then
Me.UserList.Invoke(Sub() UserListResize())
Else
UserList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
End If
End Sub
当我完成在 ListView 上添加项目时,我会调用此函数。
最佳答案
它们所做的事情并不完全相同,但有时很难区分它们。
HeaderSize
将每列的大小调整为 HeaderText.Length
或最长单元格内容
中的较大者,从而不会剪切标题文本。
ColumnContent
调整为最长的单元格内容,如果 HeaderText 比内容长,则将剪裁标题文本。使用包含 1 或 2 个数字/字符的列进行测试,但标题很长,例如“FooBar Counter of Foo”。
但这两种模式都不会剪切列文本,这意味着当您对标题文本很经济时,它们看起来会做同样的事情。其他需要考虑的事项:
- LV 中必须包含项目,
ColumnContent
才有意义 - 尽管名称中有
Auto
,但它不是持久设置 - 一旦您添加其他内容,布局可能会不正确,因此您可能需要定期重置它。 - 您始终可以按照自己的意愿排列它们,并将
AllowColumnResize
设置为 False - 您可以在每列的基础上设置
AutoResizeColumn
(注意它是单数)
可以使用Width
属性和魔数(Magic Number)-1(设置为内容)或-2(标题大小)“自动调整大小”。这允许您仅将自动调整大小逻辑应用于某些列或根据列使用不同的设置:
For n As Integer = 0 To myLV.Columns.Count -1 Step 2 ' just do every other
myLV.Columns.Width = -2 ' -2 = size to column header text
' -1 = size to longest content
Next n
动态添加列时这非常方便。您可以将新列的宽度设置为至少在某种程度上适用于开始的宽度,而不是猜测 TextExtent,然后在第一次添加内容时更改它。引用:MSDN ColumnHeader Width Property .
关于vb.net - ListView AutoReziseColumns 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101011/