如何使列表视图的列范围适合当前窗口大小。这样它会在最大化窗口模式下伸展吗?
user2287884
问问题
998 次
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 回答