1

こんにちは私はこれをメインに持っています

  NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback);
//The main also contains a form

そしてその下のこのメソッド。

static void AddressChangedCallback(object sender, EventArgs e){
// would like to have a message box here that freezes the entire application
including  the form as mentioned above , untill OK is pressed"
}
4

2 に答える 2

4

これは WinForms アプリケーションであると想定しています。NetworkAddressChangedイベントはバックグラウンド スレッドで呼び出されます。これが、そこからメッセージ ボックスを表示すると、アプリがアクティブなままになる理由です。

解決策 1: この呼び出しをメイン UI スレッドにマーシャリングする必要があります。これを行うには、メイン フォームでInvokeメソッドを使用します。フォーム クラスにメッセージ ボックスを表示するメソッドを定義します。メイン フォームで Invoke メソッドを使用して、このメソッドを呼び出します。

解決策 2: C# / .NET メッセージ ボックスがモーダルでない

于 2011-06-07T00:40:18.147 に答える
0

これは、モーダルおよびモードレスと呼ばれます。Show はモードレス、ShowDialog はモーダルです。詳しくはこちらをご覧ください

于 2011-06-07T00:43:45.713 に答える