簡體   English   中英

從子窗體VB.Net中的子窗體移動父窗體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM