2019C#を初めて間もない初心者です。C#でのアプリケーション作成でtextboxのBackColorをグラデーション形式で黒から白、白から黒に変更するものを作成したいのですが、途中の表示がうまくいきません。i);j--;}といった形で記述しているのですが、クリックを押して一定時間がたつと色が一気に白から黒、黒から白に代わってしまいます。このようになってしまうのかアドバイスを頂けたらと思います。C#でのアプリケーション作成でtextboxのBackColorを背景色だけでなく、文字色も考慮した方がよいかと。グラデーション形式で黒から白、白から黒に変更するものを作成したいのですが、途中の表示がうまくいきません。画面描画は「イベント処理を抜けた後」のアイドル時に行われるためです。処理中(ビジー状態)は直ちに反映されません。変更するようにしてみてください。呼び出してはいけません。イベントに長時間(数秒以上)の長い処理を行わせるのも避けましょう。いった形で記述しているのですが、クリックを押して一定時間がたつと色が一気に白から黒、黒から白に代わってしまいます。このようになってしまうのかアドバイスを頂けたらと思います。設定後にそれぞれのテキストボックスをRefreshするようにすれば、肉眼で確認はできるようになると思います。弁さんのおっしゃる技術的べき論はひとまず置いておいての話ですが。背景色だけでなく、文字色も考慮した方がよいかと。>>>>グラデーション形式で黒から白、白から黒に変更するものを作成したいのですが、途中の表示がうまくいきません。画面描画は「イベント処理を抜けた後」のアイドル時に行われるためです。処理中(ビジー状態)は直ちに反映されません。変更するようにしてみてください。呼び出してはいけません。イベントに長時間(数秒以上)の長い処理を行わせるのも避けましょう。ご返信ありがとうございます。先ほどtimerを使用したやり方を試したところ無事に表示することができました。迅速に回答いただき本当にありがとうございます。返信>>といった形で記述しているのですが、クリックを押して一定時間がたつと色が一気に白から黒、黒から白に代わってしまいます。>>>>なぜこのようになってしまうのかアドバイスを頂けたらと思います。設定後にそれぞれのテキストボックスをRefreshするようにすれば、肉眼で確認はできるようになると思います。弁さんのおっしゃる技術的べき論はひとまず置いておいての話ですが。ご返信ありがとうございます。timerを使用したところ無事に表示することができ来ました。描画処理についても今使用しているOCでは若干不安なところもありますので、今後表示時間を変更等する際に参考にさせていただきます。ありがとうございます。返信>>グラデーション形式で黒から白、白から黒に変更するものを作成したいのですが、途中の表示がうまくいきません。画面描画は「イベント処理を抜けた後」のアイドル時に行われるためです。処理中(ビジー状態)は直ちに反映されません。sleepとプロパティーの設定だけだと肉眼で確認する前に次の色に変わっているという現象になっていると想像されます。変更するようにしてみてください。こっちのやり方の方が結果的に書くコードはシンプルになるのかもしれませんね。この程度の処理(白⇔黒)であれば、メモリ負荷とかにそれほどクリティカルな影響はないのforループでもいいんじゃないでしょうか?3原色分全部ループ(255の3重ループ)とかなら明らかにやめた方がいいとは思いますが。呼び出してはいけません。32bitの環境で試した(refleshで肉眼確認)限りでは、1000MS(1秒)では変化は細かいが若干間延びしてイライラする、10MSだと変化が速すぎてわかりずらい感じを受けるのでどういう手段をとるかは別として間隔は100MSで妥当な気はします。マシンスペック、OSが32bitか64bitで見える印象は結構変わると思いますので、質問者さん自身で試して妥当な線を決めた方がいいと思います。イベントに長時間(数秒以上)の長い処理を行わせるのも避けましょう。クリックイベントならそこまでクリティカルに考えなくてもよいような(あくまで主観ですが)Form_Load、XX_Activateなど画面全体の描画に絡むイベントでは絶対やらない方がいいですね。グリッドにデータ反映とかでも行数多すぎるとたまに描画に絡むエラーになったりしますからね。sleepとプロパティーの設定だけだと肉眼で確認する前に次の色に変わっているという現象になっていると想像されます。肉眼でも心眼でも変化しません。背景色が実際に変わるのは、イベントを抜けた後(のアイドル時)になります。メソッドを呼ぶなどの処置が必要です。Task.Delay(100);』とかであればいざ知らず、元の処理は『Thread.Sleep(100);』を使っている点が問題になるかと思います。実施している間、画面の再描画も行われないため、このような待ち合わせ方法には、あまり意味が無いでしょう。実装方法としては、かなり問題があるかと思います。ピングを実行しません。使う場合は、注意が必要です。そのスレッドはそのウィンドウに関係するメッセージを処理しなければなりません。システム内のすべてのウィンドウへそのメッセージが送信されます。メソッドで待機しても問題ありません。返信>>なので、sleepとプロパティーの設定だけだと肉眼で確認する前に次の色に変わっているという現象になっていると想像されます。肉眼でも心眼でも変化しません。イベントを抜けた後(のアイドル時)になります。そんなことはないでしょう、refleshで見た目は変わりましたよ。秒以上も自アプリが待機状態(フリーズ状態)になりますよね...?人の感覚次第かもしれませんが、質問者さんは色の移り変わりを見たいのでしょ?であれば25秒はさほど長いとは思いません。仮に、お客さんに納品するPGとしても、そうそう、数秒でイラつくお客さんばっかりじゃないでしょう。現実問題、4分以上処理中メッセージも何も出ず、ただひたすら砂時計が処理中モードになるだけというプログラムは実際に存在します。このような待ち合わせ方法には、あまり意味が無いでしょう。実装方法としては、かなり問題があるかと思います。問題はおっしゃるような厳密性がこのケースで必要かどうかです。返信>>といった形で記述しているのですが、クリックを押して一定時間がたつと色が一気に白から黒、黒から白に代わってしまいます。>>>>なぜこのようになってしまうのかアドバイスを頂けたらと思います。設定後にそれぞれのテキストボックスをRefreshするようにすれば、肉眼で確認はできるようになると思います。弁さんのおっしゃる技術的べき論はひとまず置いておいての話ですが。このような書き方ですと、質問者さんの提示されたコードでも環境によっては色が変化するように取れてしまいますがそれはありえないのではないですか?提示のコードプロパティの値を変化させてただけでは再描画が行われるタイミングは魔界の仮面弁士さんのおっしゃるようにイベントを抜けた後になります。10:46:28)様々な意見をいただいていますが、自分はまだ始めたばかりなのでわからないことが多いです。現状としては目的の動きをさせることができましたので、またわからないことがあれば質問させていただきます。問題はおっしゃるような厳密性がこのケースで必要かどうかです。呼んではいけない』と伝えるようにしています。呼び出してはいけません。この原則を守ることで問題になることは無いと思いますよ。変更させるなどが思い当たります。===>>背景色が実際に変わるのは、>>イベントを抜けた後(のアイドル時)になります。そんなことはないでしょう、refleshで見た目は変わりましたよ。大文字小文字もスペルも間違っているようですが、それはさておき。呼び出せば、イベントを抜ける前であっても再描画処理が行われます。メソッドを呼ぶなどの処置が必要です。いう箇所に当たります。呼んでいるかどうかは影響しません。イベントを抜けた後(のアイドル時)になります。いう説明にさせていただきました。処理されないことを確認しています。した場合は、即時処理されるのですけれどね。よって処理されるメッセージは描画関係に限定されます。あれば25秒はさほど長いとは思いません。仮に、お客さんに納品するPGとしても、そうそう、数秒でイラつくお客さんばっかりじゃないでしょう。砂時計カーソルになるとか、キャンセルできないといった話をしているなら、それは別に構わないと思います。秒間かけて変化させることもまったく問題ありません。