如何使列大小适合窗口大小?

时间:2013-04-22 20:27:02

标签: c# winforms listview

如何将listview的列范围调整为当前窗口大小。这样它会在最大化窗口模式下延伸吗?

1 个答案:

答案 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非常优雅且可重复使用。

相关问题