2014-07-27 142 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; 
    } 
}