フォームを常に全面に表示したいのですが……

タグの編集
投稿者 なあ  (社会人) 投稿日時 2011/3/23 09:29:38
TopMostプロパティの設定で前面に表示できるようになるのはわかりましたが
TopMostプロパティが True のウィンドウからダイアログを出すとダイアログまで後ろに隠れてしまいます。
これを解消するにはどうすればいいのでしょうか
投稿者 しるふぃん  (社会人) 投稿日時 2011/3/23 09:42:46
モードレスのフォームが、あるフォームの背後に隠れないようにする。
http://dobon.net/vb/dotnet/form/ownedform.html

いろいろ調べてみましょう。
投稿者 なあ  (社会人) 投稿日時 2011/3/23 12:54:50
回答ありがとうございました。
ですがモードレスダイアログではないのですが・・・
投稿者 とくま  (社会人) 投稿日時 2011/3/23 13:06:49
> ですがモードレスダイアログではないのですが・・・
・・・の内容が知りたいです。

「アドバイスの内容を試したが、モードレスでしか
通用せず、私のモーダルダイアログでは背面に隠れる
事を確認しました。」ですか?

それとも「自分の状況を100%理解して1から10まで
自分の状況に応じた回答を下さい。」ですか?

後者は無茶な要求だと思います。
投稿者 しるふぃん  (社会人) 投稿日時 2011/3/23 15:47:49
なあさんの質問を推測しながらの返答ですので、すべて思い通りではないかと思います。


とくまさんもおっしゃっているように、自分ではわかっている。わからない部分だけ端折って
質問されても、こちらもすべて理解した上で返答することはできません。

この手の掲示板での最低限のルールですが、限りなく伝えられる範囲でソースコード及び
情報を提示するのが条件です。

それをご理解いただければありがたいです。
投稿者 なあ  (社会人) 投稿日時 2011/3/24 10:47:59
Form2.ShowDialog()

このようにしてForm2を表示するためモードレスではないのです。
投稿者 なあ  (社会人) 投稿日時 2011/3/24 10:51:56
分かりにくくてすみません。

>「アドバイスの内容を試したが、モードレスでしか
>通用せず、私のモーダルダイアログでは背面に隠れる
>事を確認しました。」ですか?

その通りです。
Form1のButton1をクリックしたときに

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()

    End Sub


このようにイベントを設定しています。
ですがForm1のTopMostぷろぱてぃをTrueに設定しているとForm2が背面に表示されてしまいます。
Form2のTopMostプロパティもTrueにすれば解決するのですが、できればその方法を使いたくないのです。
投稿者 YuO  (社会人) 投稿日時 2011/3/24 11:27:47
普通に親ウィンドウをShowDialogの引数に渡すだけですが……。

MSDN: Form.ShowDialog メソッド (IWin32Window) (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/w61zzfwe.aspx
投稿者 とくま  (社会人) 投稿日時 2011/3/24 11:39:22
> Form2のTopMostプロパティもTrueにすれば解決するのですが
誰もそんなこと言ってないし、リンク先にもそんな事は書いていないし。。。
。。。。アドバイスどおりのことをやってないという事ですか。
投稿者 なあ  (社会人) 投稿日時 2011/3/24 13:43:31
みなさん説明がわかりにくいです。
結局どうすればいいのかをしっかり書いてください。
投稿者 neptune  (社会人) 投稿日時 2011/3/24 14:16:58
なあさん>

まぁ落ち着いて。
YuOさんがそっくりそのまんま書いてくれてますけど、読んで調べてみましたか?

次から、出来る限り再現できる最低限のソースを書きましょう。推測や想像でアドバイス
するのは、識者さんの時間の無駄ですから。
投稿者 なあ  (社会人) 投稿日時 2011/3/24 15:47:07
ソース書いてるじゃないですか。

単純なプログラムです。
Form1のButton1を押すとForm2.ShowDialog()を実行する。
Form1のTopMostプロパティがTrueでForm2をダイアログ表示しても後ろに隠れてしまう。

これだけのことですよ
投稿者 しるふぃん  (社会人) 投稿日時 2011/3/24 16:27:44
モーダルフォームとして表示するのであれば、そのフォームが閉じられるまで他のフォームの操作はできません。
ということは、呼び出しもとのForm1のTopMostプロパティをTrueにする必要がないという風に思えますが。(Form1の操作は行えないため)

他のフォーム操作がしたいのであれば、モードレスフォームとして表示し、呼び出しもとのForm1のTopMostプロパティもTrueにしておく。
これであれば、Form1の操作もできますので、前面にしておく意味はわかりますが。

投稿者 まうす  (高校生) 投稿日時 2011/3/25 17:22:10
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
    Form2.ShowDialog(Me)
End Sub


これでどうですか?
で確認済みです。