如何将模式窗体置于 SplitContainer 的特定面板上

How to center a modal Form on a specific Panel of a SplitContainer

我的 GUI 使用 SplitContainer 控件分成两部分。
一部分是导航面板,另一部分是工作区面板。

当我打开应用程序时,启动时会出现一个新表单(使用 ShowDialog()),以欢迎用户。我想将它显示在工作区面板的中间。

有大佬知道怎么解决吗?

 Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     frmWelcome.ShowDialog()
 End Sub

您可以使用窗体的属性来执行此操作。

将 frmWelcome 表单 属性 StartPosition 设置为 CenterScreen

如果你想让它在屏幕中央打开它,你必须设置 MDI 但你可以从那里做 frmWelcome.ShowDialog(Me) 并设置 属性 StartPositionCenterParent.

希望对您有所帮助!

假设 Panel2 是您的 WorkSpace 面板,使用其 PointToScreen() 方法计算 frmWelcome 的屏幕坐标并将其定位在中间。

请务必在设计器或其构造器中设置 frmWelcome.StartPosition = Manual

在这里,我使用了Shown事件,以确保MainForm中的预设位置已经设​​置。

Private Sub MainForm_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    Dim p As Point = New Point(
        ((SplitContainer1.Panel2.ClientSize.Width) \ 2) - frmWelcome.Width \ 2,
        ((SplitContainer1.Panel2.ClientSize.Height) \ 2) - frmWelcome.Height \ 2)

    frmWelcome.Location = SplitContainer1.Panel2.PointToScreen(p)
    frmWelcome.ShowDialog()
End Sub