Vb.net Listview AutoReziseColumns不工作
我遇到了一个问题,因为这两行分别产生相同的结果,即同时调整ColumnContent和HeaderSize的大小 我已经搜索过了,但没有找到答案,我只需要根据HeaderSize调整大小,但上面的例子似乎无法正常工作。。。还是我遗漏了什么 我已经测试了多个listview控件 编辑:我是这样使用它的:Vb.net Listview AutoReziseColumns不工作,vb.net,winforms,listview,Vb.net,Winforms,Listview,我遇到了一个问题,因为这两行分别产生相同的结果,即同时调整ColumnContent和HeaderSize的大小 我已经搜索过了,但没有找到答案,我只需要根据HeaderSize调整大小,但上面的例子似乎无法正常工作。。。还是我遗漏了什么 我已经测试了多个listview控件 编辑:我是这样使用它的: ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize) Listview1.AutoResizeColumns(Co
ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
Listview1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
当我在listview上添加完项目后,我会打电话给它。它们做的事情并不完全相同,但有时很难区分它们
HeaderSize
将每列的大小调整为HeaderText.Length
或最长单元格内容
中的较大值,从而从不剪裁标题文本
ColumnContent
调整为最长单元格内容的大小,如果标题文本比内容长,则将剪辑标题文本。用一个包含1或2个数字/字符的列来测试这一点,但要有一个长标题,比如“FooBar Counter of Foo”
不过,这两种模式都不会剪切列文本,这意味着当您对标题文本感兴趣时,它们可能会执行相同的操作。其他需要考虑的事项:
- LV中必须有项目,才能使
有意义列内容
- 尽管名称中有
,但它不是一个持久设置-一旦添加其他内容,布局可能不正确,因此您可能需要定期重置它Auto
- 您可以始终按照自己的意愿对其进行布局,并将
设置为FalseAllowColumnResize
- 您可以按每列设置
(注意它是单数)AutoResizeColumn
Width
属性和-1(设置为内容)或-2(大小设置为标题)的幻数“自动调整大小”。这允许您仅将自动调整大小逻辑应用于某些列,或根据列使用不同的设置:
Private Sub UserListResize()
If Me.UserList.InvokeRequired Then
Me.UserList.Invoke(Sub() UserListResize())
Else
UserList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
End If
End Sub
一个非常方便的地方是动态添加列。与猜测TextExtent不同,您可以将新列的宽度设置为至少在某种程度上适用于开始时的宽度,然后在首次添加内容时对其进行更改。参考资料:。它们做的事情并不完全相同,但有时很难区分它们
HeaderSize
将每列的大小调整为HeaderText.Length
或最长单元格内容
中的较大值,从而从不剪裁标题文本
ColumnContent
调整为最长单元格内容的大小,如果标题文本比内容长,则将剪辑标题文本。用一个包含1或2个数字/字符的列来测试这一点,但要有一个长标题,比如“FooBar Counter of Foo”
不过,这两种模式都不会剪切列文本,这意味着当您对标题文本感兴趣时,它们可能会执行相同的操作。其他需要考虑的事项:
- LV中必须有项目,才能使
有意义列内容
- 尽管名称中有
,但它不是一个持久设置-一旦添加其他内容,布局可能不正确,因此您可能需要定期重置它Auto
- 您可以始终按照自己的意愿对其进行布局,并将
设置为FalseAllowColumnResize
- 您可以按每列设置
(注意它是单数)AutoResizeColumn
Width
属性和-1(设置为内容)或-2(大小设置为标题)的幻数“自动调整大小”。这允许您仅将自动调整大小逻辑应用于某些列,或根据列使用不同的设置:
Private Sub UserListResize()
If Me.UserList.InvokeRequired Then
Me.UserList.Invoke(Sub() UserListResize())
Else
UserList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
End If
End Sub
一个非常方便的地方是动态添加列。与猜测TextExtent不同,您可以将新列的宽度设置为至少在某种程度上适用于开始时的宽度,然后在首次添加内容时对其进行更改。参考资料:。你能展示一下你是如何在代码中使用它的吗?是的,我编辑了这个问题。它们不会做同样的事情,但是很难区分它们,除非标题文本很长或很短。如果“column”文本较长和/或将被剪裁,它不会收缩列宽以匹配标题文本。您可以始终将列宽设置为所需的宽度,然后将标题样式更改为“不可单击”。此外,在添加项之前,它不会做任何事情,然后一旦添加更多项,它可能会再次关闭,因此您必须再次调用该方法。因为子项/单元格内容几乎总是比标题长。header方法仅用于固定长标题文本的列大小(“缺少天数”,其中内容为“2”、“12”、“23”)。它不会故意剪辑内容(它会剪辑标题,不会剪辑单元格内容)。您也可以尝试-2技巧(在循环中将每个列宽设置为-2),看看这是否能满足您的需要。from:
要自动调整列头的宽度,请将width属性设置为-2。
您可以演示如何在代码中使用它吗?是的,我编辑了这个问题。它们不会做相同的事情,但是很难区分它们,除非标题文本真的很长或很短。如果“column”文本较长和/或将被剪裁,它不会收缩列宽以匹配标题文本。您可以始终将列宽设置为所需的宽度,然后将标题样式更改为“不可单击”。此外,在添加项之前,它不会做任何事情,然后一旦添加更多项,它可能会再次关闭,因此您必须再次调用该方法。因为子项/单元格内容几乎总是比标题长。header方法仅用于固定长标题文本的列大小(“缺少天数”,其中内容为“2”、“12”、“23”)。它不会故意剪辑内容(它会剪辑标题,不会剪辑单元格内容)。您还可以尝试-2技巧(将每个列宽设置为-2)