C# 列表查看最后一列太宽
本文关键字:一列 列表 最后 | 更新日期: 2023-09-27 18:31:19
当使用"None"或"ColumnContent"作为参数调用列表视图的"AutoResizeColumns(...)"方法时,最后一列不会展开以填充整个面板,但是,如果使用"HeaderSize"作为参数调用"AutoResizeColumns(...)",则最后一列将展开,如果您的文本居中或右对齐,这看起来很奇怪。
我已经能够通过在末尾添加一个额外的空白列来解决此问题,以根据需要扩展和收缩,让我预期的最后一列仅覆盖标题的宽度,但这似乎有点黑客。 他们的方法更整洁吗?
谢谢。
最后一列展开
首选宽度
我遇到了同样的问题。 这似乎发生在具有最后一个 DisplayIndex 的列上。 因此,您可以在调整大小之前添加虚拟列,然后在之后将其删除:
var dummy = new ColumnHeader();
// dummy gets the last DisplayIndex
listView1.Columns.Add(dummy);
// dummy gets the remaining space instead
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listView1.Columns.Remove(dummy);
或者,您可以更改最后一列的 DisplayIndex,然后在最后一列上调用 AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize),然后恢复它的 DisplayIndex
我发现的一种解决方案是暂时减小列表视图的大小,调用"AutoResizeColumns(...)",然后重置列表视图的大小
如:
int listViewWidth = listView1.Width;
listView1.Width = 0;
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listView1.Width = listViewWidth;
这似乎有点黑客,但至少它没有添加多余的列。
可以将 ColumnHeader 设置为在运行时根据列内容或标题进行调整。您可以通过将 width 属性设置为 -2(以自动调整列的宽度)来执行此操作
或
ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)