C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 隠れてしまったフォームを前面に表示したい


(過去ログ 110 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■65367 / inTopicNo.1)  隠れてしまったフォームを前面に表示したい
  
□投稿者/ 鳥越 (3回)-(2013/02/20(Wed) 18:37:59)

分類:[C#] 

Form1(親)からボタン押下でFrom2(子)を表示させてます。
Form2 form = new Form2();
form.Show();

「デスクトップの表示」後や、IEなどの別アプリを表示した後などフォームが隠れてしまいます。

今はタスクバーよりフォームを1つずつ表示されているのですが
自アプリのフォームのどれかにフォーカスが来たら他フォームも一緒に前面に表示させる方法はありませんか?
可能なら重なりも隠れる前に状態で表示したいです。
引用返信 編集キー/
■65434 / inTopicNo.2)  Re[1]: 隠れてしまったフォームを前面に表示したい
□投稿者/ じゃんぬねっと (11回)-(2013/02/23(Sat) 15:43:01)
じゃんぬねっと さんの Web サイト
No65367 (鳥越 さん) に返信
> 「デスクトップの表示」後や、IEなどの別アプリを表示した後などフォームが隠れてしまいます。

文章通りに読んでしまうと「そりゃ隠れるでしょう」とか「隠れない場合もありますよ」ってなりそうですが。
正確には「別のウィンドウが当該 Form を隠すよう前面に表示された後に、当該 Form をアクティブにすると」という話でよろしいでしょうか?
以下は、その前提での回答です。

> 今はタスクバーよりフォームを1つずつ表示されているのですが
> 自アプリのフォームのどれかにフォーカスが来たら他フォームも一緒に前面に表示させる方法はありませんか?

Owner を指定すれば、Form1 も From2 (原文ママ: 正しくは Form2 かな) も表示はされます。
ただし、釣られた側は非アクティブ ウィンドウとして前面表示されることがあり見た目が悪いです。

また Form1 も Form2 もどちらも操作可能な兄弟のような関係であるなら上記の方法は取れません。

> 可能なら重なりも隠れる前に状態で表示したいです。

「重なり方も隠れる前 'の' 状態で表示したい」と読み取りました。
その元に戻すコードを書くこと自体は簡単ですが、問題はタイミングの補足で完全に対応するのは難しかった記憶があります。

Form1 と 2 が、親子関係でないなら、MDI のようなアプリケーションにするのが無難です。
ただ見た目まで一昔前の MDI に踏襲する必要はなくて、幽霊的な Form0 に Form1 と Form2 を所属させる方法でも可能です。
この場合、タスク バーに表示されるのは 1 つのみとなり、見栄えもよくなります。

何が最適解かは、今ある情報だけでは判断はできません。
また兄弟のような関係の複数の Form がある仕様は、TabControl やコンテナの切り替えによって、表現すべき場合も多々あります。
親子関係であるなら、Owner 指定か、モーダル表示が適切です。

仕様の再検討も含めて、より良い方法を選択してください。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -