【问题标题】:Listview AutoReziseColumns not workingListview AutoReziseColumns 不起作用
【发布时间】:2014-07-28 20:32:44
【问题描述】:
ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
Listview1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)

我遇到了一个问题,因为这两行分别产生相同的结果,即同时调整 ColumnContent 和 HeaderSize 的大小。

我已经搜索并没有找到答案,我只需要通过 HeaderSize 调整大小,但上面的示例似乎无法正常工作......还是我遗漏了什么?

而且我已经测试了不止一个列表视图控件...

编辑:我是这样使用它的:

  Private Sub UserListResize()
    If Me.UserList.InvokeRequired Then
        Me.UserList.Invoke(Sub() UserListResize())
    Else
        UserList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
    End If
End Sub

当我在列表视图中添加完项目后,我会调用它。

【问题讨论】:

  • 你能在代码中展示你是如何使用它的吗?
  • 是的,我编辑了问题。
  • 他们不做同样的事情,但除非标题文本真的很长或很短,否则很难区分它们。如果“列”文本较长和/或会被剪裁,它不会缩小列宽以匹配标题文本。您始终可以将列宽设置为您想要的,然后将标题样式更改为 NonClickable。另外,在你添加项目之前它不会做任何事情,然后一旦你添加更多,它可能会再次关闭,所以你必须再次调用该方法。
  • 因为子项/单元格内容几乎总是比标题长。 header 方法仅适用于修复长标题文本的列大小(“Days Missed”,内容为“2”、“12”、“23”)。它不会故意剪辑内容(它会剪辑标题,不会剪辑单元格内容)。您也可以尝试 -2 技巧(在循环中将每个列宽设置为 -2),看看是否能得到您想要的东西。
  • 来自MSDN: To autosize to the width of the column heading, set the Width property to -2.

标签: vb.net winforms listview


【解决方案1】:

它们做的事情并不完全相同,但有时很难将它们区分开来。

HeaderSize 将每列的大小调整为HeaderText.Lengthlongest cell content 中的较大者,因此从不剪裁标题文本。

ColumnContent 调整为最长的单元格内容,如果 HeaderText 比内容长,剪辑标题文本。使用包含 1 或 2 个数字/字符的列进行测试,但要使用长标题,如“FooBar Counter of Foo”。

不过,这两种模式都不会剪切列文本,这意味着当您对标题文本很经济时,它们看起来可能会做同样的事情。其他需要考虑的事项:

  • LV 中必须包含项目,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

【讨论】:

  • 多么奇怪的设置!
  • 是的,但它是一个奇怪的控件!
猜你喜欢
  • 2013-12-11
  • 2017-07-07
  • 2017-01-28
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多