-1

最初に:私は完全なWinformの初心者です...しかし、私は試しています:)

私の顧客は次のようなものを望んでいます:

簡単なシナリオ:
1) メイン フォームから非モーダル ダイアログが開きます (読み取りとメモを取るため)。
2)メインフォームからモーダルダイアログが開きます。
3) 新しいモーダル ダイアログは、非モーダル ダイアログがフォーカスを得るのを妨げてはなりません。

私の質問:
これは可能ですか? もしそうなら:どのように?

よろしく
Smoller - WinForm初心者

4

2 に答える 2

3

いいえ、できません。モーダル ダイアログはメイン UI スレッドで呼び出され、スレッドが閉じられるまでブロックされます。

これには 2 つの非モーダル ダイアログを使用し、2 番目のダイアログを Z オーダーの上位に配置して、最初のダイアログの前に表示することをお勧めします。

于 2012-12-18T10:13:24.310 に答える
1

あなたが説明した方法で正確に行うことはできませんが、フォームの Owner プロパティを使用して、希望する動作に近づけることができます。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx

Ower プロパティを次のように設定して、メイン フォームから新しいフォームを生成します。

var form = new MyForm();
form.Owner = this; // assuming this is your main form
form.Show();

または、単に所有者をパラメータとして Show メソッドに渡すこともできます。

var form = new MyForm();
form.Show(this);

これが役立つ理由は、所有者を設定すると次の動作が提供されるためです (ドキュメントから)。

所有されているフォームも、所有者フォームの背後に表示されることはありません。検索ウィンドウや置換ウィンドウなどのウィンドウに所有フォームを使用できます。これらのウィンドウは、所有者フォームが選択されたときに消えることはありません。

ただし、モーダル ダイアログとは異なり、メイン ウィンドウの複数の子フォームを持つことができます。

于 2012-12-18T22:40:17.430 に答える