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

わんくま同盟

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

C# と VB.NET の入門サイト


■92269 / )  Re[4]: MDI子ウインドウを最前面にする方法
□投稿者/ 魔界の仮面弁士 (2360回)-(2019/09/06(Fri) 14:00:08)
No92266 (とっちゃん さん) に返信
>>ActivateMdiChildを試してみましたがうまくいきませんでした。
> ActivateMdiChild() メソッドがうまくいかないとすると、アクティブにしたい Mdi子フォームの、
> Activate() メソッドを呼び出す形でもうまくいかない気がします。

下記で試した限りでは、Activate の方が良いみたいです。
ActivateMdiChild だと、フォーカス遷移が期待動作しないことがあるようで。


'コントロールを何も貼ってない空の Form1
Partial Public Class Form1
  Inherits Form
  Private Child1, Child2, Child3 As Form
  Private WithEvents Button1, Button2 As Button
  Public Sub New()
    ' InitializeComponent() '←今回は実験コードなので、デザイナコードの有無はあまり関係ない

    'アクティブ化させるためのボタンを配置
    Dim pnl As New Panel() With {.Dock = DockStyle.Top}
    Button1 = New Button() With {.Text = "1", .Dock = DockStyle.Left}
    Button2 = New Button() With {.Text = "2", .Dock = DockStyle.Left}
    pnl.Controls.Add(Button2)
    pnl.Controls.Add(Button1)
    Controls.Add(pnl)

    'MDI の準備
    Me.IsMdiContainer = True
    Child1 = New Form() With {.MdiParent = Me, .Text = "Child1"}
    Child2 = New Form() With {.MdiParent = Me, .Text = "Child2"}
    Child3 = New Form() With {.MdiParent = Me, .Text = "Child3"}

    'MDI 子フォームを表示
    Child1.Show()
    Child2.Show()
    Child3.Show()
  End Sub

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' ActivateMdiChild(Child1)
    Child1.Activate()
  End Sub

  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'ActivateMdiChild(Child2)
    Child2.Activate()
  End Sub
End Class
返信 編集キー/


管理者用

- Child Tree -