人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VS2008(VB.NET)でのフォーム制御で質問です。

まず、前提情報としまして、
フォームA:メインメニュー
フォームB:入力画面
フォームC:検索サブ画面
の構成で、フォームAからフォームBをShow()で開き、フォームBからフォームCをShowDialog()で開いています。

フォームBが画面一杯の大きさの為、フォームBが表示されている時にフォームAを見る(操作する)時は、タスクバー上のフォームAをクリックして最前面にこさせています。


フォームCが表示されている状態で、タスクバー上のフォームAをクリックすると、フォームAが最前面に来てしまいます。(この状態でフォームAは操作不可)

そこで、フォームCを開く.ShowDialog()の直前で、フォームBのOwnerにフォームAをセット(.AddOwnerForm)し、.ShowDialog()の直後で、Owner設定を解除(.RemoveOwnerForm)しましたら、希望通りに近い動作になりました。
しかし、フォームCを閉じた後、タスクバー上のフォームAをクリックしても、フォームAが最前面に来ませんでした。(フォームA自体をクリックすれば最前面に来ます。)


フォームCが表示されている状態で、フォームAが最前面に絶対来ないようにする方法を教えて下さい。

●質問者: sanyozora
●カテゴリ:コンピュータ
✍キーワード:VB.NET クリック タスク メイン 入力
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● rsc
●35ポイント ベストアンサー

FormB にて、次のような感じでどうでしょうか。

私も似たようなを作りましたが、AddOwnerFormなど使いませんでしたが、普通に常にCが上に来ています。

私は、こちらのをちょっとかえて使いました。VB.NETですが、VB2008でも使えました。

●第6章 検索/置換機能の実装

>[検索]ダイアログボックスを表示する処理 … EditFindプロシージャ

Private Sub EditFind()
 Dim dlgFind As New FindDialog'FormCに相当
 dlgFind.Owner = Me'このへんが重要かも!
 dlgFind.StrFind = Me.StrFind'ここは不要
 dlgFind.Show()
End Sub

http://msdn.microsoft.com/ja-jp/library/Dd297769.aspx#hitme_VBNE...

こちらから、2010ですが、サンプルファイルが手に入るようです。

●ひと目でわかるMicrosoft Visual Basic 2010 アプリケーション開発入門

http://ec.nikkeibp.co.jp/item/books/P94290.html

http://ec.nikkeibp.co.jp/nsp/dl/09429/index.shtml

◎質問者からの返答

御回答有難う御座います。

フォームCは処理の都合で、ShowDialog()開く必要があります。

試しに、フォームCを開くShowDialog()の前に、Owner = Meを入れてみましたが、現象は変わりませんでした。


2 ● SweetSmile1978
●35ポイント

フォームCを開く ShowDialog()の手前で

フォームAを非表示にし、ShowDialog() から返ってきたら

フォームAを表示するって感じですかねぇ。

タスクバー上でのAとBの位置が変わってしまうと思いますが…。

◎質問者からの返答

御回答有難う御座います。

解決出来ない場合は、フォームAを非表示にして逃げようかと考えております。

出来れば、非表示にせずに解決できればと考えております。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ