You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将模态窗体居中显示在SplitContainer的工作区Panel上

让欢迎窗体居中在工作区Panel的实现方案

嘿,这个需求很好解决,关键是要先拿到工作区Panel在屏幕上的实际位置,再手动计算欢迎窗体的居中坐标。我给你修改一下代码,加上详细注释,你直接用就行:

Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' 先实例化欢迎窗体(如果你的frmWelcome已经提前实例化了,这行可以去掉,直接用原来的变量)
    Dim welcomeForm As New frmWelcome()
    
    ' 必须把启动位置设为手动,不然系统会自动覆盖我们设置的位置
    welcomeForm.StartPosition = FormStartPosition.Manual
    
    ' 把工作区Panel的客户区坐标转换成屏幕坐标——这一步很重要,因为Panel的坐标是相对于主窗体的,要转成全局屏幕坐标才准确
    Dim panelScreenArea As Rectangle = SplitContainer1.Panel2.RectangleToScreen(SplitContainer1.Panel2.ClientRectangle)
    
    ' 计算欢迎窗体的左上角坐标:让窗体的中心和Panel的中心重合
    Dim formLeft As Integer = panelScreenArea.Left + (panelScreenArea.Width - welcomeForm.Width) \ 2
    Dim formTop As Integer = panelScreenArea.Top + (panelScreenArea.Height - welcomeForm.Height) \ 2
    
    ' 设置欢迎窗体的位置
    welcomeForm.Location = New Point(formLeft, formTop)
    
    ' 弹出模态对话框
    welcomeForm.ShowDialog()
End Sub

几个关键点说明:

  • 如果你工作区用的是SplitContainer的Panel1,记得把代码里的Panel2改成Panel1,别搞混了。
  • 如果你的SplitContainer控件名字不是SplitContainer1,也要对应改成你自己的控件名。
  • 提前实例化窗体是为了能获取它的Width和Height,如果你的frmWelcome已经在别的地方实例化过了,直接用那个变量就行,不用重新New。

这样修改后,启动应用时,欢迎窗体就会精准居中在你的工作区Panel里啦~

内容的提问来源于stack exchange,提问作者user8666372

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:25