如何将listview的列范围调整为当前窗口大小。这样它会在最大化窗口模式下延伸吗?
答案 0 :(得分:1)
无论您如何要求,ListView仅支持两种自动列大小调整方式:列内容的长度,或列标题内容的长度。
由于这显然不是你想要的,你需要编写代码来自己完成。为此,请将处理程序方法附加到表单的ResizeEnd
事件。无论是用户还是通过代码以编程方式调整表单大小,都会引发该事件。据推测,您已经使用了ListView控件上的Anchor
和/或Dock
属性来确保它使用其父窗体调整大小,因此这应该涵盖所有情况。
在该事件处理程序方法的内部,您将计算每列的新大小并相应地调整ListView控件。这是唯一的难点,找出要用于列大小调整的算法。
如果你有这样的ListView:
| Order # | Customer Name | Phone Number | Status |
|---------|---------------|--------------|--------|
| | | | |
您可能认为“Order#”和“Status”列的宽度和宽度都相同(因为它们显示的信息量最少)。 “客户名称”需要最长(因为它显示的信息量最多),“电话号码”可能位于中间位置。
那么你要做的就是按照ListView控件的总可用宽度按比例调整每一列的大小,你可以通过查询它的ClientSize
属性来检索它;如,
float totalWidth = myListView.ClientSize.Width;
你会发现这种方法here非常优雅且可重复使用。