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

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

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

No.92276 の関連記事表示

<< 0 >>
■92276  Re[6]: MDI子ウインドウを最前面にする方法
□投稿者/ 魔界の仮面弁士 -(2019/09/06(Fri) 15:39:28)
    No92271 (とっちゃん さん) に返信
    > なるほど。。。
    > Activate が内部的に呼びだしてるのかもしれませんね。
    > それだと、状況次第ではうまくいかないなどがありそうです。

    Child1 = New Form() With {.MdiParent = Me, .Text = "Child1"}
    Child2 = New Form() With {.MdiParent = Me, .Text = "Child2"}
    Child3 = New Form() With {.MdiParent = Me, .Text = "Child3"}

    のところの順番を入れ替えて

    Child3 = New Form() With {.MdiParent = Me, .Text = "Child3"}
    Child1 = New Form() With {.MdiParent = Me, .Text = "Child1"}
    Child2 = New Form() With {.MdiParent = Me, .Text = "Child2"}

    にした場合は、ActivateMdiChild でも 1 と 2 の切り替えが正しく行われました。
    奇妙奇天烈摩訶不思議…



    No92265 (むん さん) に返信
    > 「このメンバは、.NET Framework インフラストラクチャのサポートを目的としています。
    > 独自に作成したコード内で直接使用することはできません。」とのことです。

    .NET Framework 2.0 以降のリファレンスには見当たらないですね。
    .NET Framework 1.x 当時の記述だったかな…?
    https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.activatemdichild

    …と思ったら .NET のソースコードに、<internalonly/> が付与されていますね。
    https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Form.cs,3096



    > topmostをTrueにする方法も既に試していますが
    > https://www.papy.in/bbs/vb1/200507/05070056.html
    同ログのオリジナルはここ。
    http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200507/05070056.txt


    > どのようにすれば良いでしょうか?

    MDI 子フォームとせず、親フォーム上に直接配置するという手法があります。

    ただし MDI 管理からは外れるため、MdiChildren プロパティや
    LayoutMdi メソッドとは連動しなくなりますし、
    子フォームを最大化した場合の動作も異なることになります。

    Partial Public Class Form1
      Private Child1, Child2, Child3 As Form

      Public Sub New()
        InitializeComponent()

        IsMdiContainer = True
        Child1 = New Form() With {.MdiParent = Me, .Text = "Child1"}
        Child2 = New Form() With {.MdiParent = Me, .Text = "Child2"}
        Child3 = New Form() With {.TopLevel = False, .Text = "TopMost"}
        Controls.Add(Child3)
        Child1.Show()
        Child2.Show()
        Child3.Show()

        ' Controls.OfType(Of MdiClient)().FirstOrDefault()?.SendToBack()
      End Sub
    End Class
記事No.92263 のレス /過去ログ159より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -