プロが教える店舗&オフィスのセキュリティ対策術

【C#】Form1からForm2を表示したとき、Form2がForm1を所有する

検索しても見つからなかったので質問させていただきます。

Form1からForm2を表示(Form2.Instance.Show();)したとき、
Form2がForm1の上にこないように、また、Form2は必ずForm1のすぐ後ろであるようにして欲しいんです。

たとえば、
IEで検索ウィンドウを開いたときに、検索ウィンドウを表示していてもIEは操作できるけど(モードレス)、IEの後ろに検索ウィンドウが行くことはありません。
これはForm2.Instance.Show(this);とすればいいだけですが、
自分がやりたいのはその逆です。
検索ウィンドウの後ろにIEが行くことがないようにしたいんです。

Form1.Activateなどを使って無理やりさせようとしましたが、
無理だったので質問しました。

わかる方は教えていただけると嬉しいです。
お願いします。

(ちなみにVisualStudio2010、.NET Framework3.5です。)

A 回答 (2件)

すみません C#でしたね ^^



Form1側に Form2型の変数を用意します

Form2 objForm2;

表示する際に
if ( objForm2 == null || objForm2.IsDisposed )
  objForm2 = new Form2();
this.Owner = objForm2;
objForm2.Show();


Form2側のFormClosingイベントで
if ( this.OwnedForms.Length != null ) {
  this.OwnedForms[0].Owner = null;
}
といった具合になるかと ・・・
    • good
    • 0
この回答へのお礼

思い通りにできました。ありがとうございました。
こんな簡単にできるとは…。

お礼日時:2010/11/05 22:58

Form2の表示前に me.Owner = From2.Instance を実行すればご希望の動作になりそうです



Form2側の FormClosingイベントで
if Form1.Owner IsNot Nothing then
  Form1.Owner = nothing
End if
を実行しないと Form2を閉じると Form1まで閉じてしまうと思います


Form1からForm2を開く際には Locationを適切に設定しないとForm1の影に隠れてしまうと思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!