- - PR -
マウスクリックでFormが最前面に表示されるのを禁止したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-04 20:58
2つのFormを画面に表示しています。
Form1⇒「デスクトップ画面」を覆い隠す役割を持つ,フルサイズのフォーム Form2⇒Form1上にあって,メニューを表示している小サイズのフォーム Form1上でマウスをクリックすると,当然のことですが, 「メニュー画面が後ろの隠れてしまい,メニュー操作が不可能になってしまいます。 それで,マウスクリックでFormが最前面に表示されるのを禁止したいのですが, このことは,可能なのでしょうか。 お教え願います。 [ | ||||||||
|
投稿日時: 2004-11-04 21:28
Form1 から Form2 を表示する時に、Show() ではなく、ShowDialog() すればいいのではないでしょうか。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2004-11-05 04:44
ひどりさん,ありがとうございます。確認できました。 <逆の場合の質問です> Form2からForm1を表示して,Form1の表示を背後に固定することは可能でしょうか?。(この場合,Form2にmain()があります) ご教示,よろしくお願いします。 | ||||||||
|
投稿日時: 2004-11-05 05:01
Form1.ShowDialog() する場合はまず無理です。 Form1.Show() する場合は、Form2 の Owner に Form1 を指定して、Form2 を前面に出せばできそうです。 でも、Form1 の後始末が面倒そうだし、ヘンテコな構造なんでやめたほうがいいでしょうね。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2004-11-05 05:31
[ひどりさん,ありがとうございました。
とりあえずは,『Form2 の Owner に Form1 を指定』する方法を試みて, だめだったら,Form1からForm2を表示するよう,コードを書き直してみるつもりです。 | ||||||||
|
投稿日時: 2004-11-05 07:51
その通りでした。途中でやる気も失せて・・・。 それで,発想を変えて「マウスの移動範囲を制限する」ことで 間に合わせました。 | ||||||||
|
投稿日時: 2004-11-05 10:35
Showする前にOwnerを設定してあげて下さい。
# うーん、VCLの知識が役に立つ。 # コンストラクタにあっても良いと思うけどなかったなぁ。 | ||||||||
|
投稿日時: 2004-11-05 11:48
この「Ownerの設定」のしかたを,易しく解説していただけないでしょうか?
実際にやってみると,これもかなり面倒なことがわかりました。 (なにせ,メニューから20あまりのフォームを個々に開いてメニューに戻るのですが,その都度に移動範囲を設定しなければならない状況ですので) |