当使用'None'或'ColumnContent'作为参数调用列表视图的'AutoResizeColumns(...)'方法时,最后一列不会展开以填充整个面板,但是如果'AutoResizeColumns(...)用'HeaderSize'作为最后一列展开的参数调用',如果你的文本是中心或右对齐,这看起来很奇怪。
我已经能够通过添加一个额外的空白列来解决这个问题,根据需要扩展和收缩,留下我想要的最后一列只是覆盖标题的宽度,但这似乎有点hackie。他们是一个更简洁的方式吗?
感谢。
答案 0 :(得分:1)
我发现的一个解决方案是暂时减小ListView的大小,调用' AutoResizeColumns(...)'然后重置列表视图的大小
如:
int listViewWidth = listView1.Width;
listView1.Width = 0;
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
listView1.Width = listViewWidth;
这似乎有点hackie但至少它并没有添加一个多余的列。
答案 1 :(得分:0)
我有同样的问题。这似乎发生在具有最后一个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
答案 2 :(得分:-1)
ColumnHeader可以设置为在运行时调整到列内容或标题。您可以通过将width属性设置为-2(自动调整列的宽度)
来完成此操作OR
ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)