3

別のスレッドからアクセスされるいくつかのプロパティ/メソッドを持つフォーム MainForm があります。

ある時点で、ShowDialog() を使用して AuxForm フォームを開くと、そのモーダル フォームが開いている間に、他のスレッドが引き続き MainForm のプロパティを変更することがあります。これはすべて望ましいことです。

別のスレッドからアクセスされるメソッドの 1 つで、いくつかのコードを実行する必要がありますが、モーダル AuxForm が開いていない場合のみです。これを (.NET WF フォーム プロパティを使用して) チェックする方法はありますか、それともフラグ変数を使用する必要がありますか?

注: これらのプロパティ/メソッドはいずれもコントロールを変更しません (したがって、Invoke は必要ありません)。

4

2 に答える 2

3

まあ、フラグはおそらく最良のアイデアでしょう。しかし、役に立たない情報を伝えるために、ウィンドウがモーダル ダイアログを表示するとき、ウィンドウ スタイルは WS_DISABLED を含むように変更されます。基本的にウィンドウは無効になっているため、ウィンドウが無効になっているかどうかを確認できます。

于 2010-05-21T07:41:45.493 に答える
1

たぶんこれが役立つかもしれません...アプリケーションの開いているすべてのウィンドウを取得したら、コレクションからターゲットウィンドウを検索できます。Modalプロパティをチェックすることで、フォームがモーダルであるかどうかを確認でき ます。

于 2010-05-21T08:05:09.437 に答える