C#でウィンドウズアプリケーションを作っています。
ある処理範囲内でRefreshやInvalidateが大量にあり、画面がちらついてしまいます。
このRefreshやInvalidateの処理を一時的に無効にすることはどのようにすれば良いのでしょうか?
アドバイスよろしくお願いします。
private void button1_Click(object sender, System.EventArgs e)
{
Console.WriteLine("何かの処理実行中・・・");
//ここから
for(int i=1; i<=1000; i++)
{
System.Threading.Thread.Sleep(1);
label1.Text=i.ToString();
this.Refresh();
this.Invalidate(true);
}
//ここまで のちらつきを防止したい
//(実際の処理は単純なループではない)
label1.Text="end";
Console.WriteLine("引き続き何かの処理実行中・・・");
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
前に回答したものです。
処理中に描画されないから前のような質問があったのだと思います。
当方C#はほとんど知りませんが
this.Refresh();
this.Invalidate(true);
ではなく
Application.DoEvents();ではどうでしょう?
あるいは別の方法としてbutton1_Click内の処理を別スレッドでたちあげてはどうでしょう?
private void button1_Click(object sender, System.EventArgs e)
{
button1.Enabled = false;
System.Threading.Thread MyThread = new System.Threading.Thread( new System.Threading.ThreadStart(fnc));
MyThread.Start() ;
}
private void fnc()
{
for(int i=1; i<=1000; i++)
{
System.Threading.Thread.Sleep(1);
label1.Text=i.ToString();
}
button1.Enabled = true;
}
※ちなみに私の環境で
this.Refresh();
this.Invalidate(true);
としたところ特に気がつくほどのちらつきは発生しませんでした。
WinAPIのInvalidateRectでは第3引数をFALSEとすることで
消去をしなくなるのでちらつきがなくなります。
No.1
- 回答日時:
「一時的に無効にする」というか、そもそも最初から Refresh しなきゃ良いんじゃないの?
(というか、Refresh() は Invalidate(true) を含んでいるから Refresh() した後に Invalidate(true) するのは全く無駄だと思うんだけど。)
参考URL:http://dobon.net/vb/dotnet/control/refreshupdate …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Excel(エクセル) ネットワーク上のエクセルとリンクしている時にデータ更新をvbaで、refresh Allで行う場合の 2 2023/04/10 05:39
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
5
VB2005 DataGridView上でクリックを無効にする方法はありますか?
Visual Basic(VBA)
-
6
C#で角が丸いテキストボックス
その他(プログラミング・Web制作)
-
7
ボタンクリックイベント 重複防止について
C言語・C++・C#
-
8
DataGridViewでグリッド内に線を引きたい
Visual Basic(VBA)
-
9
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
10
C# DataGridView のCellPaintingイベントで独自に描画する場合につきまして
C言語・C++・C#
-
11
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
12
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
13
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
14
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
15
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
16
Labelの文字をスクロールする際にちらつきが・・・
Visual Basic(VBA)
-
17
矢印(左右)キーでイベントを発生させたい。
Visual Basic(VBA)
-
18
OpenFileDialogを使った後にもう一度開くと以前のファイルを表示させたい。
Visual Basic(VBA)
-
19
画面リサイズ時のちらつきをなくす方法
C言語・C++・C#
-
20
C#で、画像の、指定した座標の色情報を取得し
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
VBAでループ内で使う変数名を可...
-
エクセルで、日付を入力すると...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
Loadイベント中にほかのイベン...
-
【Excel】特定の文字を含むセル...
-
ボタンクリックイベント 重複...
-
UMLでの例外処理
-
FFTの結果ついて
-
findは動くがfindnextがマクロ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBの質問#if 0 then ってどう...
-
リョウ・・・量?料?
-
EXCEL VBA マクロ 実行する度に...
-
メルカリのメルカードで買い物...
-
再帰処理を途中で抜けるには
-
VBAでセルに値が入力されるまで...
-
Do~Loopした回数をカウントしたい
-
C# 画面のちらつきを解消したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
DoEventsがやはり分からない
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
VBの質問#if 0 then ってどう...
-
VBAでCOPYを繰り返すと、処理が...
-
EXCEL VBA マクロ 実行する度に...
-
findは動くがfindnextがマクロ...
-
インタラクティブの反対語は?
-
UMLでの例外処理
-
リョウ・・・量?料?
-
Do~Loopした回数をカウントしたい
-
セックスレスの既婚女性は自慰...
-
月度は何て読みますか?
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
-
FFTの結果ついて
おすすめ情報