0

我在子表单中有一个子表单,可以重置我的应用程序的设置。其中之一是我的父表单的起始位置。我希望通过 reset_click 事件更新父表单位置。部分原因是父母关闭事件存储表单的最后一个位置,所以我需要在它关闭之前移动它。

子表格代码:

Public Sub Reset_Click(sender As System.Object, e As System.EventArgs) Handles Reset.Click

    My.Settings.Reset()
    My.Settings.Save()

    TextBox2.Text = My.Settings.FilePath
    TextBox1.Text = My.Settings.VerticalExaggeration

    Dim frm As New Global.JJsGEControlPanel.Form1()
    frm.MoveFrm()

End Sub

父级中的 MoveForm 子:

Public Sub MoveFrm()
    Me.Location = My.Settings.MainFormLocation
    Me.Refresh()

End Sub

如果从父表单中执行 MoveFrm Sub 可以工作,但如果从子点击事件执行则不会?我难住了!

4

1 回答 1

1

此行创建第​​一个表单的新实例。从未显示的实例。该命令由该隐藏实例执行,因此您看不到原始表单移动到任何地方。

Dim frm As New Global.JJsGEControlPanel.Form1()
frm.MoveFrm()

解决问题的最简单方法是将 Form1 的原始实例传递给子表单,保存这个传递的实例,然后在需要移动原始表单时使用它

在您的 Form1 中(当您创建子表单的实例时)您编写

Dim child = new frmChild(Me)

在您的子表单构造函数中

Private callerForm as Global.JJsGEControlPanel.Form1
Public Sub New(ByVal callerInstance as Global.JJsGEControlPanel.Form1)
   callerForm = callerInstance
   InitializeComponent()
End sub

最后当你需要移动主窗体时

callerForm.MoveFrm()
于 2013-09-08T13:21:36.603 回答