ListViewがリストまたは詳細アイテムを表示しないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/163472

  •  03-07-2019
  •  | 
  •  

質問

C#.NET 2.0を使用して、所有者が描画したListViewを使用して、OnDrawColumnHeader、OnDrawItem、およびOnDrawSubitemイベントをオーバーライドします。設計時にViewプロパティをDetailsに設定すると、すべてが美しく機能し、Viewプロパティとすべての表示モード表示を必要に応じて切り替えることができます(タイルビューを使用していません)。ただし、他のビューで起動すると、リストビューと詳細ビューの両方が空白になります。

あなたはおそらくコードを見たいと思うだろうが、それはたくさんあるので、私はその多くを投稿することをmしているが、必要ならできます。誰かがこれを以前に見たことがあるかどうか、そして/またはそれを修正する方法のインクリングがあるかもしれない場合、私はもっと興味があります。 Viewプロパティはユーザーが保存する設定なので、デフォルトでは常に詳細ビューで起動できるとは限りません。

役に立ちましたか?

解決

WinForms ListViewは、ほとんどの場合、実際のWindowsコントロールの上部を抽象化したレイヤーであるため、その動作には、直感に反するものが丁寧に置かれています。

リストビューを所有するオーナーの場合、リストビューが" Details"にある場合を除き、コントロールのサブアイテムは実際には作成されないという、Delphi開発者としての頃からのあいまいな思い出アイテムをロードするときのモード。

試すこと...

...表示スタイルを変更した後、WinFormsコントロールに強制的に基になるウィンドウハンドルを再作成させます。メモリが提供される場合、DestroyHandle()が必要なメソッドです。

..." Refresh"があると仮定します。アプリケーションでデータをリロードする場合、表示スタイルを変更した後に更新すると正常に動作しますか?

...他のすべてが失敗した場合は、WindowsプログラミングでCharles 'Petzolds classicのコピーを借りるか盗むかしてください。

他のヒント

いずれかのサブアイテムが追加されていないか、列を追加していません。それが私の最初の気持ちです。

デザイナを使用して正しく構成する場合は、生成されたデザイナコードに移動し、Visual Studioから出力されたコードを確認して、正しく動作するようにします。そのコードをエミュレートするだけです。

コードには何も言えませんが、DrawColumnHeaderはOwnerDrawプロパティがtrueに設定されている場合にのみ呼び出されます。 Viewプロパティに応じてtrueとfalseに自動的に設定されるかどうかはわかりませんが、試してみる価値はあります。したがって、アプリケーションを起動する前に、OwnerDrawがtrueに設定されていることを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top