【问题标题】:Listview Column AutoResize by HeaderSize or ColumnContentListview 列按列内容的标题大小自动调整大小
【发布时间】:2014-06-11 23:13:16
【问题描述】:

我有一个列表视图,我想根据列内容自动调整大小;但是,有时列的内容小于标题字段,因此会被截断。

有什么方法可以让它按列内容调整大小,但总是让它至少足够宽以显示完整的标题。

对此的任何帮助将不胜感激。

【问题讨论】:

标签: vb.net listview autoresize


【解决方案1】:

我最终编写了一个可以完成我想要完成的任务的子程序。基本上,您只需传入您想要的 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 中的较大者。也不需要数组 - 您只需要一个简单的整数变量。
  • 哇,原来如此。谢谢,我可以发誓我之前尝试过标题大小,但它最终切断了一些内容,但我只是尝试过,它工作正常。谢谢@Plutonix
  • 这很令人困惑,因为结果取决于布局和网格中当前显示的数据。除非链接stackoverflow.com/a/24106546/1070452 中详细说明了 Listview 的大小,否则内容永远不会被剪裁
【解决方案2】:

您可以将列宽设置为 -2 以调整大小以显示完整的标题。

【讨论】:

  • 当我这样做时,它使控件的宽度为 100%,并且只显示一列。我实际上想出了另一个解决方案,我将在一分钟内发布。
猜你喜欢
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2019-11-22
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多