Vb.net 中心父窗体

Vb.net 中心父窗体,vb.net,Vb.net,我正试图得到一个表格,以中心的家长。我已经做了很多“谷歌搜索”,如果成功的话,一个也没有 问题是。当我将表单设置为“中心父表单”时,它将工作,除非父表单从原始起始位置移动 示例:父窗体从屏幕左上角开始。我把它移到中央屏幕。然后,我执行一个弹出窗口,该窗口位于左上角父窗体的原始位置的中心。不是现在的。 视觉: 我已将表单属性设置为“中心父级”,以及 Me.StartPosition = FormStartPosition.CenterParent 我能重复这个问题。尝试将显示的事件处理程序添加到

我正试图得到一个表格,以中心的家长。我已经做了很多“谷歌搜索”,如果成功的话,一个也没有

问题是。当我将表单设置为“中心父表单”时,它将工作,除非父表单从原始起始位置移动

示例:父窗体从屏幕左上角开始。我把它移到中央屏幕。然后,我执行一个弹出窗口,该窗口位于左上角父窗体的原始位置的中心。不是现在的。 视觉:

我已将表单属性设置为“中心父级”,以及

Me.StartPosition = FormStartPosition.CenterParent

我能重复这个问题。尝试将显示的
事件处理程序添加到弹出窗体中。如果在显示表单时将所有者分配给表单,则应该能够在处理程序中定位表单,如下所示。请注意,如果移动所属窗体,弹出窗体将不会更改

确保使用
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

我能重复这个问题。尝试将显示的
事件处理程序添加到弹出窗体中。如果在显示表单时将所有者分配给表单,则应该能够在处理程序中定位表单,如下所示。请注意,如果移动所属窗体,弹出窗体将不会更改

确保使用
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

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

你看到这个答案了吗

更新 您需要做两件事才能使其正常工作:-

  • 根据@mark hall,您需要在家长处出示表格和通行证:-

    将子项设置为frmChild

    child=New frmChild()

    child.Show(Me)'显式声明父级

  • 根据我引用的上述答案,在子窗体的
    Load
    事件中,您需要调用
    Me.CenterToParent()


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

    你看到这个答案了吗

    更新 您需要做两件事才能使其正常工作:-

  • 根据@mark hall,您需要在家长处出示表格和通行证:-

    将子项设置为frmChild

    child=New frmChild()

    child.Show(Me)'显式声明父级

  • 根据我引用的上述答案,在子窗体的
    Load
    事件中,您需要调用
    Me.CenterToParent()


  • 请显示用于显示第二个表单的代码。@MarkHall
    popup.show()
    try
    popup.show(Me)
    。。。我将采取一些截图,以显示它在做什么,很难做到这一点explain@MarkHall正如您所见,它会根据主窗体的位置移动一点。请显示用于显示第二个窗体的代码。@MarkHall
    popup.show()
    try
    popup.show(Me)
    。。。我将采取一些截图,以显示它在做什么,很难做到这一点explain@MarkHall正如您所看到的,它会根据主窗体的位置移动一点。请原谅我,您指定所有者是什么意思?或者我该怎么做。当您显示表单时,请使用我在此处提到的语法
    yourformname.show(Me)
    。好的,基本表单已加载
    Me.CenterToScreen()
    。和
    弹出窗口。单击即可显示(我)
    。然后在弹出窗体上显示您的代码。虽然运气不好,但我确信我遗漏了一些东西。请确保所显示的事件已被触发。我还称这个类为popup,您需要创建一个popup表单的实例并显示它。类似于
    Dim myPopup as popup=new popup()
    的东西,那么您将使用
    myPopup.Show(Me)
    如果您不这样做,您将使用弹出窗体的默认实例。请原谅,您指定所有者是什么意思?或者我该怎么做。当您显示表单时,请使用我在此处提到的语法
    yourformname.show(Me)
    。好的,基本表单已加载
    Me.CenterToScreen()
    。和
    弹出窗口。单击即可显示(我)
    。然后在弹出窗体上显示您的代码。虽然运气不好,但我确信我遗漏了一些东西。请确保所显示的事件已被触发。我还称这个类为popup,您需要创建一个popup表单的实例并显示它。类似于
    Dim myPopup as popup=new popup()
    的东西,然后您将使用
    myPopup.Show(Me)
    如果您不这样做,您将使用弹出表单的默认实例。使用用户973238第一篇文章中的代码。它是有效的,除非我移动基础形状,否则它会粘在原来的位置上。编辑:我知道它是如何工作的,它位于屏幕中心,而不是表单中心。使用了用户973238第一篇文章中的代码。它是有效的,除非我移动基础形状,否则它会粘在原来的位置上。编辑:我看到它是如何工作的,它位于屏幕的中心,而不是窗体。