- - PR -
C# Form上のコントロールで途中経過を乱れなく表示させたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-27 10:58
Windows.Form上のラベルで実行の途中経過を逐次表示させたいが、
下記のような問題が発生する。単純にUpdate()を実行するだけでは 不十分なのでしょうか?Reflesh()やUpdate()の正しい使い方がきちんと 理解できていません。解決方法をアドバイス願います。 <例題> 現在の実行経過、つまり「XXXまで実行中」という表示を リアルタイムに乱れなく表示させたい 外乱(Formをドラッグする等)が入ると、それ以降の更新が行われず、 外乱が入った時点の表示のまま処理が進行してしまう。 例えば、i=1324の時点で外乱が入るとそれ以降ループが完了するまで、 「1324まで実行中」の表示のまま表示が停止してしまう。 そして、ループが完了した時点に「9999まで実行中」という具合に表示が更新される。 これでは、処理の進行状況を正確にモニターすることができない。 private void button1_Click(object sender, System.EventArgs e) { for(int i = 0;i < 10000;i++) { // // ここに処理したいロジックが挿入される // // 実行経過の表示 label1.Text = String.Format("{0}まで実行中",i); label1.Update(); } } | ||||
|
投稿日時: 2006-01-27 11:02
これは、Refresh などではダメでしょう。 Application.DoEvents メソッドでメッセージを吐かせる必要がありますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-27 15:47
解決できました。ありがとうございました。
|
1