中心父表格

时间:2015-06-26 02:37:48

标签: vb.net

我正在尝试获取一个表单以使父级居中。我做了很多谷歌搜索'没有,如果它有效。

问题是。当我将表单设置为" Center Parent Form"它将起作用,除非父表单从原始起始位置移动。

示例:父窗体从屏幕的左上角开始。我把它移到中心屏幕。然后我执行预制和操作以获得一个弹出窗口,该窗口将居中到左上角的父窗体的原始位置。不是现在的。 视觉:http://imgur.com/a/jGBfP

我已将表单属性设置为' Center Parent'以及

Me.StartPosition = FormStartPosition.CenterParent

2 个答案:

答案 0 :(得分:3)

您在哪个类和方法中设置Me.StartPosition属性?

您是否看到过Stackoverflow的答案? https://stackoverflow.com/a/30199106/1337635

<强> 更新 你需要做两件事才能让它发挥作用: -

  1. 根据@ mark-hall,你需要显示表格并传递给父母: -

    Dim child As frmChild

    child = New frmChild()

    child.Show(Me) 'Explicitly declare the parent

  2. 根据上面提到的答案,在子表单的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