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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.12272 の関連記事表示

<< 0 >>
■12272  フォームの最前面表示したい
□投稿者/ マルコ -(2008/01/07(Mon) 10:27:13)

    分類:[VB.NET/VB2005] 

    開発言語:Microsoft2003 .net2003 ver 7.1.3091
    :Microsoft.NET Framework1.1 ver 1.1.4322

    質問: 親フォームからボタンで子フォームをモードレスで表示しています。
        複数の子フォームが開ける仕様なのですが、子フォームを複数(4画面)開いて
        ある1つの子フォームをクリックした時に最前面表示したいのですが。
        Topmostメソッドでは、最前面に表示されません。
    Microsoft2005 VB2005では最前面に表示されたのですが
        2003ではできないのでしょうか?
親記事 /過去ログ26より / 関連記事表示
削除チェック/

■12275  Re[1]: フォームの最前面表示したい
□投稿者/ やじゅ -(2008/01/07(Mon) 12:01:15)
    No12272 (マルコ さん) に返信
    >     Topmostメソッドでは、最前面に表示されません。
    > Microsoft2005 VB2005では最前面に表示されたのですが
    >     2003ではできないのでしょうか?
    >

    2003→2005でそのような変更は無かったと思いますので、出来ると思います。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12276  Re[1]: フォームの最前面表示したい
□投稿者/ Tom Yama -(2008/01/07(Mon) 13:21:27)
    No12272 (マルコ さん) に返信
    >     Topmostメソッドでは、最前面に表示されません。
    System.Windows.Forms.Form には、TopMostメソッドなんてありません。プロパティならありますが?

    ちなみに、TopMostプロパティがTrueのフォームが、Falseのフォームより前にくることは保障されていますが、
    TopMostプロパティをTrueにした瞬間に最前面にくるなんてことは、保障されていないと思います。

    >     ある1つの子フォームをクリックした時に最前面表示したいのですが。
    通常は、Activateメソッドを使用するのでは?
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12277  Re[2]: フォームの最前面表示したい
□投稿者/ マルコ -(2008/01/07(Mon) 14:10:55)
    >■No12276 (Tom Yama さん) に返信
    > ちなみに、TopMostプロパティがTrueのフォームが、Falseのフォームより前にくることは保障され>ていますが、
    > TopMostプロパティをTrueにした瞬間に最前面にくるなんてことは、保障されていないと思います。
    回答ありがとうございます。
    上記の回答で子フォームのTopMostプロパティがfalseになっているものに対して、topMostをtrueに
    することで最前面にくるのでしょうか?
    現在、子フォームのクリックイベントの中で、me.Topshow=Trueを記述して、最前面の表示をして
    いるのですが間違っているのでしょうか?
    子画面をshowした後に、TopMostをfalseにする必要がありますか?
    忙しいところすみませんが宜しくお願いします。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12279  Re[3]: フォームの最前面表示したい
□投稿者/ Hirotow -(2008/01/07(Mon) 14:24:47)
    おそらく、子フォームのTopMostを設定した上でActivateを呼び出して前面に持ってくるのが一番適当だと思います。
    こうすることで子フォームが最前面に表示され、親フォームやほかのウィンドウなどの裏にも隠れなくなります。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12281  Re[4]: フォームの最前面表示したい
□投稿者/ マルコ -(2008/01/07(Mon) 15:19:45)
    2008/01/07(Mon) 15:20:52 編集(投稿者)
    2008/01/07(Mon) 15:20:37 編集(投稿者)

    No12279 (Hirotow さん) に返信
    > おそらく、子フォームのTopMostを設定した上でActivateを呼び出して前面に持ってくるのが一番適当だと思います。
    > こうすることで子フォームが最前面に表示され、親フォームやほかのウィンドウなどの裏にも隠れなくなります。

    Public Class Form1
    Inherits System.Windows.Forms.Form
    private Sub MenuItem1_Click(by.......)
    ' メニューより、子画面を開く
      dim 子フォーム as new Form2
      子フォーム.show
    end sub
    private Sub Form1_Click(by.......)
    'フォームをクリックした時に最前面に表示
    me.Activate()
    me.TopMost=True
    end sub
    end class

    Public Class 子フォーム2
    Inherits System.Windows.Forms.Form
    private Sub 子フォーム2_Click(by.......)
    'フォームをクリックした時に最前面に表示
    me.Activate()
    me.TopMost=True
    end sub
    end class

    上記のような記述でやってみたのですが、子フォームを4画面開いたのですが
    うまくいきません。記述のしかたがおかしいのでしょうか?
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12286  Re[5]: フォームの最前面表示したい
□投稿者/ まどか -(2008/01/07(Mon) 16:01:08)
    書かれたコードでは何をやりたいのかがよくわかりません。(Form1.TopMostも設定してるし。。。)
    TopMost プロパティはデスクトップ上で最上層(一番手前)に常に表示させたい(後ろへ行かせたくない)という目的です。
    つまり、通常はその対象は「ひとつ」のはずです。(瞬間的には)

    Showメソッドの引数にMe(Form1)を指定すれば、Form1の後ろへ行くことはなくなりますが
    そういうことではない?
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12282  Re[5]: フォームの最前面表示したい
□投稿者/ Tom Yama -(2008/01/07(Mon) 15:49:08)
    No12272 (マルコ さん) に返信
    >     ある1つの子フォームをクリックした時に最前面表示したいのですが。
    ところで、何もしなくても、普通は、こうなりますよね?
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12285  Re[6]: フォームの最前面表示したい
□投稿者/ Hirotow -(2008/01/07(Mon) 15:59:55)
    何がしたいのかが具体的にわかりません。
    単に子ウィンドウを最前面にしたいのであれば表示前に設定しておけば良いわけで。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12289  Re[7]: フォームの最前面表示したい
□投稿者/ マルコ -(2008/01/07(Mon) 17:50:57)
    No12285 (Hirotow さん) に返信
    > 何がしたいのかが具体的にわかりません。
    > 単に子ウィンドウを最前面にしたいのであれば表示前に設定しておけば良いわけで。

    回答していただきありがとうございます。
    何がしたいか?については、一般にデスクトップ上で
    親フォーム、子フォームがモードレスで複数開いている状態で
    目的のフォーム(親もしくは子)をクリックしたら
    最前面でアクティブに表示したい。これだけです。

    具体的には、子フォームは照会画面です。
    親フォームは、入力画面です。
    親フォームの参照ボタンから子フォームが開きます。
    開かれた子フォームの照会内容を参照しながら、
    親フォームの入力項目に入力する仕様になっています。

    宜しくお願いいたします。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12291  Re[8]: フォームの最前面表示したい
□投稿者/ まどか -(2008/01/07(Mon) 18:04:55)
    #「最前面」という言葉がネックかな。

    TopMost プロパティはデスクトップ上にあるウィンドウの重なり順を常に一番上に保つという動作です。
    つまり、通常その対象はそのタイミングで「ひとつ」のはずです。>「一番」はひとつしかない

    もうひとつ、オーナーフォームという動作があります。
    先に書きましたが、Show メソッドの引数に親フォームを指定します。
    これはShowしたフォームが親フォームの後ろにいかなくなるという動作です。

    書かれた要望からは後者でいいような気がします。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12292  Re[9]: フォームの最前面表示したい
□投稿者/ まどか -(2008/01/07(Mon) 18:08:59)
    > つまり、通常その対象はそのタイミングで「ひとつ」のはずです。>「一番」はひとつしかない

    うそ書きました。m(_ _)m
    忘れてください。

    でも、「デスクトップ上でTopMost」なので、そうしたいかどうかですね。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12290  Re[8]: フォームの最前面表示したい
□投稿者/ Hirotow -(2008/01/07(Mon) 18:02:08)
    それならば子フォームのデザイナ画面でTopMostを設定しておき、
    参照ボタンのクリック時に子フォームをShowすればいいはずです。
    また子フォームの初期化が重たい場合は子フォームのOnClosingでthis.Hide();e.Cancel=true;returnとしておくと閉じても隠れるだけなので次回にすばやく表示できます。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12295  Re[8]: フォームの最前面表示したい
□投稿者/ Tom Yama -(2008/01/07(Mon) 18:40:13)
    No12289 (マルコ さん) に返信
    > 何がしたいか?については、一般にデスクトップ上で
    > 親フォーム、子フォームがモードレスで複数開いている状態で
    > 目的のフォーム(親もしくは子)をクリックしたら
    > 最前面でアクティブに表示したい。これだけです。
    それが、既定の動作です。
    ですから、何もしなければ(何もコードを書かなければ)、そういう風に動作するはずです。
記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12303  Re[9]: フォームの最前面表示したい
□投稿者/ れい -(2008/01/07(Mon) 20:42:52)
    たぶん、他のフォームがTopMostになってるから
    アクティブなフォームが最前面に表示されなくなってしまってるのではないでしょうかね。

    無駄にTopMostを使ってるような気がします。


記事No.12272 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12336  Re[10]: フォームの最前面表示したい
□投稿者/ マルコ -(2008/01/08(Tue) 10:40:12)
    No12303 (れい さん) に返信
    > たぶん、他のフォームがTopMostになってるから
    > アクティブなフォームが最前面に表示されなくなってしまってるのではないでしょうかね。
    >
    > 無駄にTopMostを使ってるような気がします。
    >
    たくさんの回答本当に感謝しています。
    れいさんの回答で無駄にTOPMOSTを使っているとありましたが
    子フォームのClickイベントの中でtopmostを定義してました。
    あえて定義する必要がないということですよね。

記事No.12272 のレス / END /過去ログ26より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -