• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# ListView 自作列幅調整 描画されない)

C# ListView 自作列幅調整 描画されない

このQ&Aのポイント
  • C#のListViewでリストビューの列幅を自作し、描画更新されない状態になる問題について質問です。
  • ListViewに3列追加し幅が変更された際、2列目の幅のみを引き延ばす操作を行うと、描画更新されない状態になります。
  • サンプルコードと画像が提示されていますが、操作手順によってListViewの描画が正常に表示されない問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.1

ListView の列幅を内部で変更したことによって、コントロールの再描画領域の判定に狂いが生じているのでしょう。列幅を変更した後で、自分で強制的に再描画をするようにするのが最も簡便です。 具体的には、OnClientSizeChanged の最後で this.Refresh(); を実行するようにしましょう。(コントロール内のデータ量があまりにも多い場合などで「チラつき」が発生する可能性があります。その場合は、列幅の変更方法自体を再検討したほうが良いです)

okwaveid_1
質問者

お礼

ご回答ありがとうございます。 > ListView の列幅を内部で変更したことによって、コントロールの再描画領域の判定に狂いが生じているのでしょう。 なるほど、確かにクリックした時のリストアイテムのBounds値がおかしな値になっていました。(何故かクリックした時はその行のリストアイテムは描画されました。) > 具体的には、OnClientSizeChanged の最後で this.Refresh(); を実行するようにしましょう。(コントロール内のデータ量があまりにも多い場合などで「チラつき」が発生する可能性があります。その場合は、列幅の変更方法自体を再検討したほうが良いです) 私の環境で表示されるようになりました!ありがとうございます。 (ただ、ちらつきがひどいですが...) 糸口が見えましたので、変更方法を見直してみます! ありがとうございました!

関連するQ&A