![](/img/trans.png)
[英]VB.NET Run sub in parent (instance of) form from a child (instance) of a subform
[英]Move a parent form from a sub in a child form VB.Net
我有一個子窗體中的子窗體,可以為我的應用程序重置設置。 其中之一是我父母表格的開始位置。 我希望通過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可以工作,但是如果從子單擊事件中執行,MoveFrm Sub可以工作嗎? 我很沮喪!
該行創建第一個表單的新實例。 從未顯示的實例。 該命令由該隱藏實例執行,因此您看不到原始表單移動到任何地方。
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.