【发布时间】:2014-06-11 23:13:16
【问题描述】:
我有一个列表视图,我想根据列内容自动调整大小;但是,有时列的内容小于标题字段,因此会被截断。
有什么方法可以让它按列内容调整大小,但总是让它至少足够宽以显示完整的标题。
对此的任何帮助将不胜感激。
【问题讨论】:
-
这只是前几天出现的。见:stackoverflow.com/a/24106546/1070452
标签: vb.net listview autoresize
我有一个列表视图,我想根据列内容自动调整大小;但是,有时列的内容小于标题字段,因此会被截断。
有什么方法可以让它按列内容调整大小,但总是让它至少足够宽以显示完整的标题。
对此的任何帮助将不胜感激。
【问题讨论】:
标签: vb.net listview autoresize
我最终编写了一个可以完成我想要完成的任务的子程序。基本上,您只需传入您想要的 ListView 的名称,它将调整所有列的大小以适合列内容,或者如果内容短于标题,则适合标题大小。
Friend Sub autoResizeColumnWidths(ByVal lvControlName As ListView)
Dim minWidthArray(lvControlName.Columns.Count) As Integer
For i = 0 To lvControlName.Columns.Count - 1
'Resize to fit the header
lvControlName.AutoResizeColumn(i, ColumnHeaderAutoResizeStyle.HeaderSize)
'Store the minimum width required to display the header
minWidthArray(i) = lvControlName.Columns(i).Width
'Resize to fit contents
lvControlName.AutoResizeColumn(i, ColumnHeaderAutoResizeStyle.ColumnContent)
'Check to see if the minumum width is met
If lvControlName.Columns(i).Width < minWidthArray(i) Then
lvControlName.AutoResizeColumn(i, ColumnHeaderAutoResizeStyle.HeaderSize)
End If
Next
End Sub
【讨论】:
myLV.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize) 完全相同,即将其大小调整为 HeaderSize 或 ColumnContent 中的较大者。也不需要数组 - 您只需要一个简单的整数变量。
您可以将列宽设置为 -2 以调整大小以显示完整的标题。
【讨论】: