如何将模态窗体居中显示在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
相关产品推荐
相关产品推荐

