none
listviewにおける再描画の不正 RRS feed

  • 質問

  •  .net 3.5 SP1listviewを使用したプログラムを作成したのですが、稀に以下のような不正な描画がされます。

    1.listviewを生成し、各行のアイテムを追加します

     →この時、各行の文字のフォントを太字に設定します(情報の未読を意味します)

    2.lisitviewのある行をダブルクリックして別ウィンドウ画面で詳細表示を行います

     →この時、選択した行の文字のフォントを細字に設定しなおします(情報の既読を意味します)

      選択した行の文字のフォントの変更は正しく反映されます(細字で描画されます)

      ※しかし、この時に選択した行の1行下の行において、太字の文字と細字の文字の両方が折り重なるようにして描画される不正描画が行われます※

    3.listviewの不正に描画された行は再描画(listviewが乗っているウィンドウを最小化→元に戻す等を行う)されることにより、正常な文字(太字のみ)が描画されます

     上記のような現象が実行環境で稀に発生します。再現する条件は不明です(稀にしか発生しないため)

     listviewの描画は行単位では制御していないため、ある特定の1行の描画が不正になる理由が不明です。

     このような現象の原因は何かわかりますでしょうか?

     

    ●その他の環境等

    listviewitemの追加、変更、太字/細字の変更時は、BeginUpdate/EndUpdatelistviewの描画を一時停止しています

    ・選択した行より上の行、および、選択した行より2行下以降の行はいまのところ正常に描画されます

    ●開発環境

    Microsoft Visual Studio 2008 Version 9.0.30729.1 SP

    Microsoft .NET Framework Version 3.5 SP1

    インストールされている Edition: Professional

    Microsoft Visual C# 2008   91984-270-6419753-60653

    ●実行環境

    Windows 7(64bit)

    2015年4月8日 7:48