2010-07-07 36 views
1

我有這樣的:C#ListView的第一列太大

lvPalette.Columns.Add("Code", -2, HorizontalAlignment.Center); 
lvPalette.Columns.Add("Attendu", -2, HorizontalAlignment.Center); 
lvPalette.Columns.Add("Chargé", -2, HorizontalAlignment.Center); 
lvPalette.Columns.Add("Validé", -2, HorizontalAlignment.Center); 
lvPalette.Columns.Add("Description", -2, HorizontalAlignment.Center); 

這最終使第一列一樣大的控制本身,而不是可以達到同樣的標題文本一樣大。這是爲什麼?

我試着將第一列的widt設置爲100,但是第二列的所有空間都達到了控件寬度。

編輯:我想我覺得它爲什麼這樣做。看來將寬度設置爲-2會強制頭部佔用整個控制寬度空間。所以當第一列被添加時,它是唯一存在的,所以它佔據了整個控制空間,然後其他的被添加並設置爲正確的大小。

所以問題是,我怎麼能阻止它做到這一點?

+0

在你的ListView控件中,你的View屬性是否設置爲Details? – 2010-07-07 16:17:47

+0

是的,它被設置爲詳細信息。 – Wildhorn 2010-07-07 17:00:32

回答

0

似乎除了設置值之外,沒有辦法阻止這種行爲。

我發現了一種方法,通過標題和字段進行自動化,然後選擇寬度最大的一個,但它有強制3調整大小的不利方面,這不是很好。

0

嘗試在向列表視圖中添加列後,在每列上調用AutoResize方法。

+0

是的,我知道這一點,以及我做了什麼來解決它,但這不是問題。我想知道爲什麼默認的調整器工作不正常。 – Wildhorn 2010-07-07 17:01:10

0

我想我覺得它爲什麼這樣做。看來將寬度設置爲-2會強制頭部佔用整個控制寬度空間。所以當第一列被添加時,它是唯一存在的,所以它佔據了整個控制空間,然後其他的被添加並設置爲正確的大小。

所以問題是,我怎麼能阻止它做到這一點?

+0

您應該使用此信息編輯原始問題,而不是發佈答案。 – 2010-07-07 19:46:04

2

根據您的觀察以及我對應用於第一列的尺寸的經驗,我添加了第一列的丟棄列,並在添加第二列時移除了列。第二列是保留的列。然後,我爲第一列做了刪除,並添加了其他有效的。你知道什麼,尺碼是好的!

if (!pastTossOutCol) { 
    listView1.Columns.RemoveAt(0); 
    pastTossOutCol = true; 
} 

也許它會幫助別人花了幾個小時試圖讓它工作。