我在子表单中有一个sub,它会重置我的应用程序的设置。其中一个是我父表单的起始位置。我希望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 Sub:
Public Sub MoveFrm()
Me.Location = My.Settings.MainFormLocation
Me.Refresh()
End Sub
如果从父表单中执行,MoveFrm子工作,但是如果从子点击事件执行,则不会工作?我很难过!
答案 0 :(得分: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()