2017-04-23 4 views
0

View = ListのC#ListViewでは、スクロールバー用に予約されている空のスペースが下部にあります。奇妙なことに、Scrollable = falseを設定すると、この未使用領域のサイズが大きくなります。C#ListView、View = List - 下の未使用領域を取り除くにはどうすればよいですか?

このスペースを削除するか、アイテムを表示するためにはどうすればよいですか?

編集: この問題はWindowsフォームアプリケーションで発生しています。

編集2:問題はフォントのサイズと何らかの形で結びついているようです。私はフォントサイズが9ポイントになる必要があります。 11 ptではこの問題は発生しません。

編集3:また、私はItem spacing in ListView where View=Listを試しましたが、それも役に立たなかったです。

編集4:これは、Win7テーマでWin7で発生します。しかし、少なくともScrollable = falseでは、クラシックテーマでは発生しません。

Unused space at the bottom of ListView, View=List

+0

これはhttp://stackoverflow.com/questions/1561780/wpf-listview-scrollbar-visible-to-false –

+2

どのようにWPFのソリューションに役立つだろうに役立つかもしれません? - これは本当に奇妙です。私は決してリストモードを使用することはありません。 - それは11ptフォントで12項目に収まるように少し見えます。いいえ、意味がありません。 – TaW

+0

私はあなたが何かをしていると思います。問題は9ptフォントで表示されます。私が11に変更すれば、そのスペースはなくなった! listViewには、1列に収まる項目の数を計算するための内部参照の高さがあり、フォントサイズが変更されたときに正しく更新されないようです。 – Simeon

答えて

0

まだ、よりエレガントな解決策を望んでいますが、今のところ、私はこの回避策を見つけた:

一つは、余分なスペースを取り除くためにパネルを使用することができます。私はTaWの答えから考えを得ましたAdd padding to last ListView item in WinForms

私がスクロールバーを必要としたくないので、これは私のために働いたことを忘れないでください。

 listView1.Scrollable = true; 
     int itemHeight = listView1.GetItemRect(0).Height; 
     int numItemsPerColumn = 10; 
     //One needs to add 21 to the height, because even if no Scrollbar 
     //is needed, that space will stay reserved. 
     listView1.Size = new Size(500, itemHeight * numItemsPerColumn + 21); 
     Panel P = new Panel(); 
     P.BackColor = listView1.BackColor; 
     P.Location = listView1.Location; 
     //The height you actually want 
     P.Size = new Size(500, itemHeight * numItemsPerColumn + 4); 
     P.BorderStyle = listView1.BorderStyle; 
     listView1.BorderStyle = BorderStyle.None; 
     listView1.Parent = P; 
     listView1.Location = new Point(0, 0); 
     this.Controls.Add(P); 
関連する問題