2

メイン フォーム A とモーダル ダイアログ B があるとします。

B をスレッドから (invoke を使用して) モーダル ダイアログとして起動します。ダイアログは正しく表示され、親がフォーム A である ShowDialog(parent) を使用して起動されます。

B を閉じると、メイン ダイアログ A がマウス クリックなどのイベントに正しく応答しません。この問題は、次の状況でのみ再現されます。

  • コードは .NET Framework 1.1 プロファイルを使用してコンパイルされます
  • コードは Windows 7 x64 マシンで実行されます

ダイアログを閉じると、次の症状が発生します。

  • フォーム A は一部のマウス クリックには応答しませんが、マウスの移動には応答します (マウスの移動でボタンが強調表示されます)。
  • メイン ウィンドウの閉じるボタンは、マウス ホバー時に強調表示され、クリックすることもできますが、フォームは閉じられません。
  • 新しいモーダル ダイアログはもはやモーダルではありません。
  • プロパティ を持つダイアログStartPosition=CenterParentは中央に配置されず、画面の左上隅に表示されます。

他のマシンで問題を再現できませんでした。また、.NET 2.0 以降を使用してコードをコンパイルすると、問題は再現されません。

この問題を解決するための提案はありますか? 私のアプリケーションには 1.1 が必要です。イベントキューを復元するために実行できる呼び出しはありますか?

前もって感謝します。

4

1 に答える 1

0

最後に、それはスレッドの問題でした。スレッド外で呼び出しコードを変更したところ、うまくいきました。

スレッドからこのダイアログを表示する必要がある場合があるため、非常に面倒ですが、.NET 1.1 および x64 マシンの場合、invoke およびマルチスレッドに問題があるようです。

いずれにせよ、コードが .NET 2.0 以降でコンパイルされている場合 (つまり、実際の x64 で動作する場合)、問題はなくなります。

于 2011-07-21T08:39:22.550 に答える