| ■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 |