掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
モーダルで表示している場合のWindowsアプリケーションをアクティブ化するには? (ID:119600)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
普通はそこは自分で調べます。ってゆーかヒントとなる事も ほぼ答えな事も既に書いてるんですが…(泣)。 『モーダルダイアログ』自体が分からないなら辞書で調べて下さい。 http://e-words.jp/w/E383A2E383BCE38380E383ABE38380E382A4E382A2E383ADE382B0.html ヘルプでも、過去ログ検索でも、WEB検索でも情報はあります(必要な 情報に辿り着くには苦労するでしょうが、その過程で覚えるべき事が 存在します)。ボクは初心者でも調べれば分かる事をいちいち解説したり しません。 今回、回り道をしてしまいましたが、アプリケーション1つ(P2.exe) の中での問題でしたので実行アプリ(P2.exe)でアクティブなフォーム が最前面に来ると考えます。以下、アクティブ = 最前面と解釈します。 既に書きましたが、モーダルとアクティブは意味が違います。 モーダル表示したらアクティブになるわけではありません。従って みなみさんのコードはアクティブになるような条件が揃えられて おらず、アクティブにするコードも書かれていなかった事になります。 …当然の結果だったわけです。 何故、引数の Me を削除して動きが変わったのかは、それぞれの関数の ヘルプを読んで下さい。違う動作が記述されてます。 [Form.ShowDialog メソッドのオーバーロード一覧]MSDN(オンラインヘルプ) http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsformclassshowdialogtopic.asp モーダル表示したウィンドウがアクティブになる必要があるのであれば アクティブなウィンドウをオーナーウィンドウに指定してみて下さい。 (確かめてませんが(←確かめられない理由は以下↓)) ここからおまけ。 今回の問題、内容的には P2.exe 単体起動でも起こるハズです。 ハズってのはボクの環境(Win2000)ではモーダルダイアログが アクティブで無いフォームを引き連れて最前面に出てきてしまう からです(滅)。上の解説と真逆の事言ってますが見なかった事に…(ー人ー)。 New したフォームが最前面に出てる感も(?)暇が無いので調べませんが。 …で(ぇ、P2.exe 単体起動の質問であればじゃんぬねっとさんの 書き込みで解決してたでしょう。無駄な…とまでは言いたくない ですが、回り道したくなければ問題点は切り分けて、少しでも限定 される質問を心がけると良いでしょう(ってゆーかそーしてもらえると 恥をかかなくて有難いですw)。 …しかしここで P2.exe 単体起動したらモーダルウィンドウが 最前面に出てきたりしたら…w。Xp マシンの方、ボク以外の 2000 マシンの方…ご報告をお待ちしておりますw。 以下サンプルテストコード//////////////////////// [VB.NET] Public Sub ShowDialogNewForm1() Dim wForm1 As New Form1 With wForm1 .Text = "孫" .ShowDialog() ' ←↓ここを変更して下さい。 '.ShowDialog(Me) '.Show() End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim wForm As New Form1 Me.Text = "親" With wForm .Text = "子" .Show() Me.Activate() '親フォームアクティブ System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(1000) .ShowDialogNewForm1() End With End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.