0

如何使列表视图的列范围适合当前窗口大小。这样它会在最大化窗口模式下伸展吗?

4

1 回答 1

1

无论您如何要求,ListView 仅支持两种自动调整列大小的方式:按列内容的长度,或按列标题内容的长度。

由于这显然不是您想要的,因此您需要自己编写代码来执行此操作。为此,请将处理程序方法附加到表单的ResizeEnd事件。只要用户或通过代码以编程方式调整表单的大小,就会引发该事件。据推测,您已经在 ListView 控件上使用了Anchor和/或Dock属性,以确保它可以根据其父窗体调整大小,因此这应该涵盖所有情况。

在该事件处理程序方法中,您将计算每列的新大小并相应地调整 ListView 控件。这是唯一困难的部分,确定要用于列大小调整的算法。

如果您有这样的 ListView:

| Order # | Customer Name | Phone Number | Status |
|---------|---------------|--------------|--------|
|         |               |              |        |

您可能决定希望“订单号”和“状态”列的宽度相同且最窄(因为它们要显示的信息量最少)。“客户姓名”需要最长(因为它要显示的信息量最多),“电话号码”可以在中间的某个位置。

因此,您所要做的就是根据 ListView 控件的总可用宽度按比例调整每列的大小,您可以通过查询其ClientSize属性来检索它;例如,

float totalWidth = myListView.ClientSize.Width;

您将在此处找到此方法的一个非常优雅且可重用的演示。

于 2013-04-22T23:44:40.447 回答