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
我在列表视图中添加项目时就打电话给我了。
答案 0 :(得分:4)
他们不做同样的事情,但有时很难区分它们。
HeaderSize
将每列调整为HeaderText.Length
或longest cell content
的较大值,从而不会剪切标题文字。
ColumnContent
调整为最长的单元格内容,如果HeaderText比内容长,将剪辑标题文本。使用包含1或2位数/字符的列进行测试,但需要使用像“FooBar Counter of Foo”这样的长标题。
这两种模式都不会剪切列文本,这意味着当您使用标题文本时,它看起来就像它们做同样的事情。其他需要考虑的事项:
ColumnContent
有意义的项目Auto
,但它不是持久性设置 - 只要您添加其他内容,布局可能不正确,因此您可能需要定期重置。AllowColumnResize
设置为False AutoResizeColumn
(请注意它是单数)使用Width
属性和幻数-1(设置为内容)或-2(大小为标题),单个列宽可以是“自动调整大小”。这允许您仅将AutoResize逻辑应用于某些列,或根据列使用不同的设置:
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。