我想用“dock”作为ListView
列。我想为第1列和第2列设置最小宽度,但我希望它们展开以匹配整个ListView
宽度,其中Dock
设置为Fill
。如何设置自动宽度?
可能吗?能够将列宽设置为其长度的百分比值将会很好。我在网上搜索,很多人都说要将宽度设置为-2,但它对我不起作用。
我想用“dock”作为ListView
列。我想为第1列和第2列设置最小宽度,但我希望它们展开以匹配整个ListView
宽度,其中Dock
设置为Fill
。如何设置自动宽度?
可能吗?能够将列宽设置为其长度的百分比值将会很好。我在网上搜索,很多人都说要将宽度设置为-2,但它对我不起作用。
你有两个基本的选择:
你可以选择的ColumnHeaderAutoResizeStyle
选项之一:ColumnContent
,HeaderSize
或None
。这些选项完成了他们的名字。请注意,只有在设置它们时才应用它们。这意味着要制作HeaderSize
您必须先第一个添加列,然后设置选项。并使ColumnContent
工作,你需要第一添加列和也填充项目与他们的内容!
或者您可以选择脚本Resize
事件来根据自己的喜好调整列的大小。我附加了调整每列的代码,以便填充ListView
,并且每列都保持其旧的百分比宽度。
一点点额外的编码,你也可以混合选项:除了使用AutoResizeColumns
来设置所有列相同的选项,你也可以使用AutoResizeColumn
它设置选项
为单个列。
如果你想要一列不参与百分比调整大小,你可以简单地以某种方式标记它;一个简单的实现,我选择通过设置标记固定的列其Tag = "#"
这里是所有列设置为相同的选项代码:
,这里是一个调整大小的代码,使所有列在保留其相对宽度的同时仍然填充ListView:
private void listView1_Resize(object sender, EventArgs e)
{
int oldsum = 0;
foreach (ColumnHeader ch in listView1.Columns) oldsum += ch.Width;
foreach (ColumnHeader ch in listView1.Columns)
{
if (ch.Tag != "#") ch.Width = ch.Width * listView1.ClientSize.Width/oldsum;
}
}