我根据MSDN将列的宽度设置为“-2”,它实际上按内容和标题自动调整大小。
要自动调整到列标题的宽度,请将Width属性设置为-2
我要做的下一件事是设置最后一列来填充listview。我这样做(简化):
myListView.Columns[lastColumnIndex].Width
+= myListView.Width - myListView.Columns.Cast<ColumnHeader>().Sum(column => column.Width);
但是列的宽度是......“-2”。
如何获得实际宽度?
答案 0 :(得分:2)
似乎问题是关于动态设置-2。我的代码看起来像:
private void Resize()
{
myListView.Columns[0].Width = -2;
myListView.Columns[1].Width = -2;
myListView.Columns[2].Width += myListView.Width
- myListView.Columns.Cast<ColumnHeader>().Sum(column => column.Width)
- (myListView.BorderStyle == BorderStyle.Fixed3D ? 4 : 2)
- SystemInformation.VerticalScrollBarWidth;
}
解决方案是添加一行:
private void Resize()
{
myListView.Columns[0].Width = -2;
myListView.Columns[1].Width = -2;
myListView.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.None); // This one
myListView.Columns[2].Width += myListView.Width
- myListView.Columns.Cast<ColumnHeader>().Sum(column => column.Width)
- (myListView.BorderStyle == BorderStyle.Fixed3D ? 4 : 2)
- SystemInformation.VerticalScrollBarWidth;
}