1

私は疑問に思っていました... View.List スタイルを使用して描画している ListViewItems の束を持つ WinForms System.Windows.Forms.ListView があります。各 ListViewItem には、ListView の SmallImageList から取得した「SmallIcon」があります。

私の問題は、アイコンが左側の境界線に近すぎることです。境界と ListViewItem の Position プロパティを無駄に変更しようとしました。

とにかくListViewItemsに何らかのオフセットを持たせることはありますか?

4

7 に答える 7

3

Win32 リストビュー コントロールには、アイコンとラベルの間のスペースを増やす設定がありません (リストだけでなく、どのビューでも)。が表示されている場合、設定ListViewItem.Positionは何もしません。ListViewList

Textローテクな解決策は、すべての ListViewItem の値の前に 1 つのスペースを付けるだけです。少し醜いですが、とても簡単です。

本当にピクセル レベルの制御が必要な場合は、所有者が描画する必要があります。いつものように、.NET ListView を使って何かをしている場合、ObjectListViewは所有者がアイテムを簡単に描画できるようにします。

于 2009-09-24T22:11:46.123 に答える
1

Try adding white space to the left of your small images.

If you're using 16x16 images change to 24x16 for example by adding 8 white (or ListView Background color) pixels to the left.

于 2009-09-24T16:32:12.807 に答える
1

ListView View LargeIcons にいる場合は、item.position を使用してテキストを配置できます。

于 2010-04-13T06:45:27.843 に答える
0

スタイルを使用しているView.Listため、カスタム描画を実装するか、画像のパディングを検討する必要があると思います。SetBoundsCoreまた、ListView コントロールをオーバーライドし、 or SetClientSizeCore(または同様のもの) をオーバーライドしてその境界を操作することも検討できます。

ただし、ビューListView用に設定されている場合は、次のプロパティを使用してこれを行うことができます。View.DetailsListViewItem.IndentCount

IndentCount プロパティは、それを含む ListView の View プロパティが Details に設定され、ListView の SmallImageList プロパティが設定されている場合にのみ使用できます。出典: MSDN

于 2009-09-24T16:45:01.863 に答える
0

スクリーンショットは、あなたが求めているものを正確に見るための例としては良いでしょう.

面白いことに、Windows エクスプローラーは ListView を使用してファイルとフォルダーを表示します。私は通常、ビューをレポート モードまたは詳細モードで実行します。リスト表示モードに切り替えただけで、あなたが説明している正確な問題が表示されます! うわぁ。Win32 オブジェクトとその特定のビュー タイプのバグである可能性があります。

簡単な回避策は、単一の列を持つ ListView の Report スタイルを使用するか、何かを自分で実装することです。.Net の FlowLayoutPanel は、カスタム リスト ビューの開始点として非常にうまく機能します。

于 2009-09-24T16:32:36.147 に答える