5

操作の実行中に MESSAGE をユーザーに表示しようとしています。MESSAGE にはボタンが表示されません。単なるメッセージ (テキスト) と、場合によっては背景画像。

問題は次のとおりです。

  • MessageBox は適切なコントロールではないようです (ボタンが原因で、実行中のプロセスがブロックされます)。
  • Form.ShowDialog() も実行中のプロセスをブロックします。どうすればいいのかわからない。
  • メッセージを表示し、プロセスを実行し、プロセスが完了したらメッセージを破棄したいと考えています。

でこれを達成する方法はC#

4

4 に答える 4

8

メッセージを含む単純なフォームを作成し (または、メッセージを変更できるようにパブリック プロパティを公開するか、メッセージを渡すためのメッセージ パラメーターを持つコンストラクターを公開します)、この Show overloadを使用してフォームを表示します。次に、(全体) 元の (所有者) フォームを無効にします (または、アクセスしたくないコントロールを無効にします)。

したがって、「メイン」フォームで次のようにします。

Form f = new MessageForm();
f.Show(this);         //Make sure we're the owner
this.Enabled = false; //Disable ourselves
//Do processing here
this.Enabled = true;  //We're done, enable ourselves
f.Close();            //Dispose message form

また、BackgroundWorkerの使用を検討してください。

于 2012-07-16T10:22:19.347 に答える
2

カスタム フォームを作成し、独自の動作を記述します

于 2012-07-16T10:21:27.820 に答える
0

カスタムフォームを作成して、最小限のスタイルなどに設定します。プロセスへの参照を渡して時々チェックするなどして、プロセスがいつ完了するかを確認してください。

于 2012-07-16T10:23:02.690 に答える
0

これを行う 1 つの方法は、終了時にイベントを発生させるワーカー クラスを作成することです。

バックグラウンドで実行されるように、新しいスレッドでワーカー クラスを実行します。

「終了」イベントのイベント ハンドラーとして閉じるメソッドを使用して、モーダル フォームを作成します。このように、UI は引き続き機能して応答し、ワーカー スレッドが終了するとフォームが閉じます。

于 2012-07-16T10:28:21.527 に答える