2013-12-11 98 views
0

這是我的問題...
我有一個窗體(Form1),它調用另一個窗體(Form2)。在這個Form2中,當我關閉表單時,我想調用Form1的方法來更改Form1組件的值。該方法被調用,但Form1的組件值不會改變...我想這是因爲當我從Form2調用Form1的方法時,它創建了一個Form1實例,並且它不在Form1中執行的方法從中我叫窗體2

Form1中調用Form2的從Form2更改Form1的TextBox文本

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click 
    frmForm2.ShowDialog() 
End Sub 

窗體2調用窗體2

的方法
Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click 
    frmForm1.ChangeValues() 
End Sub 

回答

2

傳遞的Form1原實例的Form2構造,像這樣:

Public Class Form2 Inherits Form 
    Dim theForm1 As Form1 
    Public Sub New(form1 As Form1) 
     theForm1 = form1 
    End Sub 

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click 
     ' Call instance of Form1 passed in to change the values here 
     theForm1.ChangeValues() 
    End Sub 
End Class 

現在Form1,當你創建了Form2情況下,你需要傳遞的Form1實例,就像這樣:

Dim frmForm2 As New Form2(Me) 
frmForm2.ShowDialog() 

注:Me是當前類的引用, Form1在這種情況下。

+0

非常感謝您......這工作得很好。 – user1600801

0

如果你沒有在ChangeValues(通過任何值),然後簡單地把它後ShowDialog的()線。然後窗體2並不需要了解Form1中在所有...

Form1中調用Form2的,然後更新本身算賬:

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click 
    frmForm2.ShowDialog() ' <-- code stops here until frmForm2 is dismissed 
    Me.ChangeValues() ' <-- we're already here, update the values! 
End Sub