我正在尝试获取一个表单以使父级居中。我做了很多谷歌搜索'没有,如果它有效。
问题是。当我将表单设置为" Center Parent Form"它将起作用,除非父表单从原始起始位置移动。
示例:父窗体从屏幕的左上角开始。我把它移到中心屏幕。然后我执行预制和操作以获得一个弹出窗口,该窗口将居中到左上角的父窗体的原始位置。不是现在的。 视觉:http://imgur.com/a/jGBfP
我已将表单属性设置为' Center Parent'以及
Me.StartPosition = FormStartPosition.CenterParent
答案 0 :(得分:3)
您在哪个类和方法中设置Me.StartPosition
属性?
您是否看到过Stackoverflow的答案? https://stackoverflow.com/a/30199106/1337635
<强> 更新 强> 你需要做两件事才能让它发挥作用: -
根据@ mark-hall,你需要显示表格并传递给父母: -
Dim child As frmChild
child = New frmChild()
child.Show(Me) 'Explicitly declare the parent
根据上面提到的答案,在子表单的Load
事件中,您需要致电Me.CenterToParent()
答案 1 :(得分:1)
我能够复制这个问题。尝试将Shown
EventHandler添加到弹出窗体中。如果您在显示表单时将所有者分配给表单,则应该能够将表单放在处理程序中,如下所示。请注意,如果您移动拥有表单,弹出窗体将不会更改。
确保使用Show(Me)
显示表单,否则将不会填充Owner
。
Public Class popup
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
BackColor = Color.LightBlue 'So I can see it
End Sub
Private Sub popup_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Left = (Owner.Width / 2 - Width / 2) + Owner.Left
Top = (Owner.Height / 2 - Height / 2) + Owner.Top
End Sub
End Class