フォーム上でボタンをクリックすると、実行時間の長いタスクが開始されます。タスクは別のワーカー スレッドで実行され、タスクの実行中に進行状況バーを含む別のフォームを表示します。
タスクが終了するかキャンセルされると、進行状況バーを表示しているフォームが閉じられます。ダミーコードは次のようになります。
task.DoWorkAsync();
progressBar.Show(parent);
そして課題が終わったら
progressBar.Close();
しかし、プログレス バーを表示しているフォームが閉じられた瞬間に、メイン フォームがバックグラウンドに移行することがあります。より正確には、問題を再現するために私がしなければならないこと:
- アプリケーションを開始する
- 別のウィンドウ (別のアプリケーション、たとえば Excel) をクリックして前面に表示します。
- アプリケーションウィンドウをクリックします(前面に表示します)
- タスクを実行する
プログレスバーが閉じられた後、私のアプリケーションウィンドウは、以前に前面に持ってきた別のウィンドウ (ここでは Excel) の後ろに消えます。
もちろん、上で説明したことは、私のアプリケーションの大まかな概要です。しかし、私が必要としているのは、進行状況バーが閉じられたときにフォームがフォームの後ろに消える理由を見つけることです。