2

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

おそらくコードを見たいと思うでしょうが、それはたくさんあるので、それほど多くを投稿することをためらっていますが、必要に応じて投稿できます. 誰かがこれを以前に見たことがあるかどうか、および/またはそれを修正する方法を知っているかどうか、もっと興味があります。View プロパティはユーザーが保存する設定になるため、デフォルトで常に詳細ビューから開始できるとは限りません。

4

4 に答える 4

4

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

于 2008-10-02T17:21:23.297 に答える
2

WinForms ListViewは、ほとんどの場合、実際のWindowsコントロールの最上位の抽象化レイヤーであるため、直感に反する動作の側面があり、物事を丁寧に表現します。

Delphi開発者としての私の時代から、ListViewを描画している所有者の場合、アイテムをロードするときにListviewが「詳細」モードでない限り、コントロールのサブアイテムは実際には入力されないという漠然とした記憶があります。

試すこと...

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

...アプリケーションにデータをリロードするための「更新」があると仮定すると、表示スタイルを変更した後に更新すると、正常に機能しますか?

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

于 2008-10-22T09:49:24.467 に答える
0

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

于 2008-10-22T03:05:28.603 に答える
0

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

于 2008-10-22T09:17:02.673 に答える