Twitterクライアント制作メモ – ListViewのちらつき

C#でクライアントをぼちぼち作っているわけですが・・・。
TLを取得してリストビューを更新する際に、どうしてもちらつきが発生してしまいます。
個人用途でしたらこれでも良いとは思いますが、なんだか見た目が良くありませんね。
そこで、ちらつきを防止するための方法があります。

スポンサードリンク

まず一つ目はダブルバッファリングを使用する方法。
要は裏画面描画です。詳しいことはググるなりしてください。
ListViewにてダブルバッファリングを利用する際には、ListViewを継承したDoubleBufferingクラス(実際、名前は何でも良い)を作り、それを利用するみたいです。
(参考:ListViewを更新したときのちらつきを抑制する(C#メモ))

WindowsフォームにはDoubleBufferedプロパティがあるそうなので、それを利用した例です。
ですが、こんなことをしなくてももっと手軽に出来る方法があります。
それが二つ目の、BeginUpdate、EndUpdateメソッドを使うやり方です。
(参考:ListView.BeginUpdate メソッド)
この二つのメソッドは、ListViewに標準で用意されているメソッドなので、クラスを作ることなくListViewクラスから呼び出すことが出来ます。
~中略~
ListViewItem lti = new ListViewItem();
listView1.BeginUpdate();
listView1.Items.Clear();
foreach (TwitterStatus t in res.ResponseObject)
{
  lti = listView1.Items.Add(t.User.Name);
  lti.SubItems.Add(t.Text);
}
listView1.EndUpdate();
~中略~
これで、ListView更新時にちらつかなくなりました。
何をしているのかはMSDNに書いてありますが、BeginUpdate~EndUpdate間の処理結果は、EndUpdateに到達するまで描画しないことでちらつきを防止してるみたいです。
要は処理が終わるまで結果を出力(描画)させないようにしているんですね~。
これで、ちらつき問題は解決です。あとは、アイコンですね。

取得方法はTwitterizerメモの記事で書こうと思います。
ではでは。

スポンサードリンク
Pocket

コメントを残す

メールアドレスが公開されることはありません。