1

マウスが「上」にある項目をコントロールが再描画されるたびに、その背景色が失われます(つまり、白です)。

アイテムが再びペイントされ、カーソルがその上にない場合、正しい背景色が復元されます。

なぜこれが起こるのか、どうすればそれを止めることができるのか誰か知っていますか?

どんな助けでもいただければ幸いです

これを拡張し、できればもう少しコンテキストを提供します....

これは、Windows 7、.NET 3.5 で発生しています (ただし、プロジェクトが 4.0 を対象としていたときにも発生していました)。私の開発用コンピューターのテーマは Viao Theme 5 ですが、デフォルトの Windows 7 テーマを持つ別のマシンでも発生します。

リストビューは次のようにインスタンス化されます...

        this.PlaylistTrackList.Cursor = System.Windows.Forms.Cursors.Hand;
        this.PlaylistTrackList.Dock = System.Windows.Forms.DockStyle.Fill;
        this.PlaylistTrackList.FullRowSelect = true;
        this.PlaylistTrackList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
        this.PlaylistTrackList.LabelWrap = false;
        this.PlaylistTrackList.Location = new System.Drawing.Point(4, 4);
        this.PlaylistTrackList.Margin = new System.Windows.Forms.Padding(4);
        this.PlaylistTrackList.MultiSelect = false;
        this.PlaylistTrackList.UseCompatibleStateImageBehavior = false;
        this.PlaylistTrackList.View = System.Windows.Forms.View.Details;

A、B、C、D、E の 5 つのリスト ビュー アイテムがあるとします。アイテム BC と D の背景色プロパティが赤の場合、何も選択されておらず、何も選択されません。なんらかの理由でリスト ビュー コントロールが再描画され、カーソルが項目 BC または D のいずれかの上にある場合、項目は赤ではなく白い背景色で描画されます。ただし、マウスがアイテムの上にない場合、その再描画は赤に戻ります。

「実際の」背景色のプロパティに関係なく、カーソルが白い背景の上にあるアイテムを常に描画するのを止めるにはどうすればよいですか?

4

1 に答える 1

0

次のように ListView コントロールを初期化します。

    listView1.BackColor = Color.Black;
    listView1.ForeColor = Color.White;
    listView1.Dock = DockStyle.Fill;
    listView1.View = View.Details;
    listView1.FullRowSelect = true;

詳細については、次のリンクを確認してください: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.ownerdraw.aspx

于 2012-09-03T13:04:46.693 に答える