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.1
- 回答日時:
「一時的に無効にする」というか、そもそも最初から Refresh しなきゃ良いんじゃないの?
(というか、Refresh() は Invalidate(true) を含んでいるから Refresh() した後に Invalidate(true) するのは全く無駄だと思うんだけど。)
参考URL:http://dobon.net/vb/dotnet/control/refreshupdate …
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とすることで
消去をしなくなるのでちらつきがなくなります。
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
-
4
画面を強制的に再描画させる方法
C言語・C++・C#
-
5
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
6
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
7
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
8
C#で角が丸いテキストボックス
その他(プログラミング・Web制作)
-
9
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
10
DoEventsがやはり分からない
Visual Basic(VBA)
-
11
C# Controls.Addで動的に配置したコントロールのRemoveについて
C言語・C++・C#
-
12
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
13
PictureBoxでのアニメーションのちらつき防止
Visual Basic(VBA)
-
14
C#についてText Boxの枠
その他(ソフトウェア)
-
15
OpenFileDialogを使った後にもう一度開くと以前のファイルを表示させたい。
Visual Basic(VBA)
-
16
画面リサイズ時のちらつきをなくす方法
C言語・C++・C#
-
17
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
18
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
19
Labelの文字をスクロールする際にちらつきが・・・
Visual Basic(VBA)
-
20
ボタンクリックイベント 重複防止について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
インタラクティブの反対語は?
-
findは動くがfindnextがマクロ...
-
DoEventsがやはり分からない
-
リョウ・・・量?料?
-
メルカリのメルカードで買い物...
-
NULLを含むフィールド値の条件分岐
-
お家デートをしててハグを長い...
-
ビープ音を連続して鳴らす
-
エクセルVBA マクロ処理中のポ...
-
セックスレスの既婚女性は自慰...
-
UMLでの例外処理
-
VBAでセルに値が入力されるまで...
-
彼女に陰毛どのくらい処理して...
-
【C#】コンボボックスに任意の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
Do~Loopした回数をカウントしたい
-
VB.NET Excelを読み込んでDataT...
-
月度は何て読みますか?
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
VBA SaveChanges 上書きされない
-
iD
-
Select Case文でこのようなこと...
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
おすすめ情報