- PR -

【C#】ListViewへの高速な上段からのItem追加について

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-28 13:36
引用:

Makotoさんの書き込み (2006-06-28 13:28) より:

 ・ListView内の情報は、100行でサイクリック処理を行なう
 ・ListViewへの追加は、1件づつ
 ・ListViewへの追加は、上側から行なう
 ・ListViewへの追加では、画面のちらつきを抑制する。

ということなので、要件的にAddRangeは今回は未使用になります。


ん?
これは AddRange が未使用になる理由にはならないように思うんですが・・・

ListView に項目を渡して処理をさせるのではなくて、別のところで上記の処理をさせてまとめて AddRange させた方が高速だ、と言う意味じゃないんでしょうか?
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2006-06-28 15:21
いつもお世話になっております。

>ListView に項目を渡して処理をさせるのではなくて、
>別のところで上記の処理をさせてまとめて AddRange させた方が高速だ、
>と言う意味じゃないんでしょうか?

???
『別のところで上記の処理をさせてまとめて
 AddRange させた方が高速〜』
って、どういう意味でしょうか?

今回は、1件(=1行)追加ごとに描画を行なう必要があるので、
『まとめて』の意味がよくわからないのですが...!?

もしかして私、AddRangeの使い方を勘違いしてるのでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-06-28 16:36
引用:

今回は、1件(=1行)追加ごとに描画を行なう必要があるので、
『まとめて』の意味がよくわからないのですが...!?



自前でコレクションを持てば?って話です。

アイテムの追加や削除の編集操作はコレクションに対して行い、BeginUpate(), Items.AddRange(), EndUpdate() という処理の流れも可能です。

また、自前でコレクションを持つなら、仮想 ListView にしてしまって、コレクションの編集操作を行った後に Refresh() という手もありかもしれません。
(チラつくかな?)
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-06-28 16:37
引用:

今回は、1件(=1行)追加ごとに描画を行なう必要があるので、


「描画」がユーザーへの表現であるなら、おっしゃるとおり不要だと思います。
#追加されていく様をユーザーに見せたいという意味です。
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2006-06-28 17:11
お手数をおかけしてます。

データ部(コレクション)と画面部を分離して実装することで、
データ部をまとめて更新して、その後で、
まとめて画面側に反映させるということですね。
(その結果、『ちらつきが軽減される。』ということですよね。)

納得しました。
未記入
会議室デビュー日: 2006/08/15
投稿数: 1
投稿日時: 2006-08-15 18:15
>1件づつ
どうでもいいことですけど、これがかなり気になって読んでて気色悪かったです。

スキルアップ/キャリアアップ(JOB@IT)