- - PR -
仮想モード(VirtualMode)の DataGridView で RowCount を減らす時に時間がかかる
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-12-19 18:15
Windows アプリケーションを作っていて、DataGridView でたくさんの行数を扱うために仮想モード(VirtualMode)を使っています。
行数をたくさんある状態から行数を減らすときに、CPU使用率が100%になり、その状態がしばらく続きます。 下記に、再現コードを示します。フォームに DataGridView と TextBox と Button を1個ずつ貼ります。起動したら、テキストボックスに行数として 100000 を入れ、ボタンを押し、つぎに、10 を入れボタンを押します。この直後にCPU使用率が100%の状態が数秒ほど続きます。これがすぎれば、あとはスクロールなどは軽いです。
なにか回避策はないでしょうか? 10万行はたしかに少なくはない行数ですが、1万行でも、重い時間が一瞬ですがあります。 不思議なのは、行数が少ない状態から行数を増やすときは、一瞬で終わります。私としては、増やすのに時間がかからないのだから、減らすときも時間がかからないようにできても良いと思うのですが。 なお、環境は Windows XP + Visual C# 2008 + .NET Framework 3.5 です。 [ メッセージ編集済み 編集者: unibon 編集日時 2008-12-19 18:16 ] | ||||||||
|
投稿日時: 2008-12-25 19:30
こんにちは、passolです。
もう、解決されているかもしれませんが・・・ 一旦、Clearしちゃってセットし直すとかじゃダメですよね・・・ 余計なことを書いてすいません。 | ||||||||
|
投稿日時: 2008-12-25 19:41
コメントありがとうございます。いまだに解決していません。 Clear ってどうやるんでしょうか?(DataGridView クラスの ClearSelection メソッドではないですよね?) ちなみに最初に提示したコードは、セルの内容はなにも表示させず、単に行数(縦方向のセルの数)を増減させるだけですが、これでもすでに遅いという症状が出てしまいます。 | ||||||||
|
投稿日時: 2008-12-25 19:54
こんにちは、passolです。
DataGridView1.Rows.Clear()です。 | ||||||||
|
投稿日時: 2008-12-25 21:30
ありがとうございます。これでできました。 先日のサンプルコードでは、
のように、従来の RowCount の行の手前に Rows.Clear() の行を追加することでうまく(早く)動きました。 今開発している、実際に仮想モードでセルに値を入れているコードでも、早く動き、セルの表示も大丈夫でした。 |
1