【问题标题】:Auto widths in ListView [duplicate]ListView 中的自动宽度 [重复]
【发布时间】:2011-07-30 07:32:16
【问题描述】:

如何根据ListView中每列内容的长度来设置每列的宽度?我讨厌必须在运行时不断更改每列的大小。是否有包含此信息的 MSDN 文档?我找不到我应该看的地方

谢谢

【问题讨论】:

    标签: c# .net winforms listview controls


    【解决方案1】:

    在填充列表后使用两个调整大小选项:

    myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
    myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
    

    这会将列的大小调整为列数据的宽度,然后恢复列标题的最小宽度,而不会完全破坏原始的自动调整大小。

    【讨论】:

    • 哇,运行这两项工作,很棒的技巧!
    • 非常好的技巧。但为什么它会起作用?根据 MSDN,ColumnHeaderAutoResizeStyle.HeaderSize 应该将列缩小到标题宽度,但这不会发生?为什么?幸运的是,列表视图中的错误是非常有用还是糟糕的文档?
    【解决方案2】:

    查看 ColumnHeader.AutoResize() 方法。填充 Items 后调用它,表单的 OnLoad() 方法是第一次机会。

    【讨论】:

    • S/O 上的计时器真的给了我 s s。我还有一分钟要等,在那一分钟之后,它说还剩 46 秒,所以我等了 46 秒。然后它说还剩10秒。 :@
    • 哈哈,不客气@Hans。让我兴奋的不是“等待”,而是计时器对我撒谎的事实。 :)
    【解决方案3】:

    我明白了:

    viewer.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
    

    【讨论】:

    • 但是如果该列是空白的呢?列自动调整大小的常见问题之一是,虽然理想情况下它会根据列标题最小宽度的内容调整大小,但自动调整大小属性会强制空列的宽度约为两个像素。跨度>
    • 是的,@贾斯汀,我同意你的看法。我才意识到这一点。我所做的是根据内容调整大小,当我知道列的内容不可能比列标题本身更宽时,我只是根据标题调整大小。但是,这仍然不是最理想的方式。
    • 这是我遇到的问题。我想要“按标题调整大小,然后仅在内容比标题宽时按内容调整大小”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2020-09-14
    • 2010-11-18
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多