2014-07-27 64 views
1

我想用“dock”作为ListView列。我想为第1列和第2列设置最小宽度,但我希望它们展开以匹配整个ListView宽度,其中Dock设置为Fill如何设置自动宽度?

可能吗?能够将列宽设置为其长度的百分比值将会很好。我在网上搜索,很多人都说要将宽度设置为-2,但它对我不起作用。

回答

0

你有两个基本的选择:

  • 你可以选择的ColumnHeaderAutoResizeStyle选项之一:ColumnContentHeaderSizeNone。这些选项完成了他们的名字。请注意,只有在设置它们时才应用它们。这意味着要制作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; 
    } 
}