我想用「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;
}
}