2017-08-04 101 views
-1

我有兩個帶有文本框和按鈕的表單,我希望第一個表單打開第二個表單。然後,我繼續在第二個窗體的文本框中鍵入一個值,以便當我單擊第二個窗體上的按鈕時,它必須關閉並將文本框的值傳遞給第一個窗體文本框。從另一個表單打開表單並獲取一個值,然後將其傳遞迴第一個表單

我一直在努力,沒有運氣迄今做到這一點...

我目前使用vb.net在Visual Studio 2015年

這裏是我的代碼:

Public Class Form1 

    WithEvents fr2 As New Form2 

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click 
     fr2.Show() 
    End Sub 

    Private Sub fr2_passvalue() Handles fr2.passvalue 
     Me.txtform1.Text = fr2.txtform2.Text 
    End Sub 

End Class 

Public Class Form2 

    Event passvalue() 

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    End Sub 

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click 
     RaiseEvent passvalue() 
     Me.Close() 
    End Sub 

End Class 

我試圖直接訪問控件,但它不工作,因爲vb.net現在使用類的一切。我似乎無法弄清楚如何解決這個問題。

+0

有與此有關的問題gobs。從**相關**開始,依靠*研究*而不是*運氣* – Plutonix

+0

代碼作品。有什麼問題? – LarsTech

回答

0

重新定義您的事件以傳遞字符串。然後使用Form2事件將值傳遞給處理程序。

Public Class Form2 

    Public Event passvalue(text As String) 

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click 
     RaiseEvent passvalue(txtform2.Text) 
     Me.Close() 
    End Sub 

End Class 

在Form1中處理它,更新Form1的TextBox。

Public Class Form1 

    WithEvents fr2 As Form2 

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click 
     fr2 = New Form2() 
     fr2.Show() 
    End Sub 

    Private Sub fr2_passvalue(text As String) Handles fr2.passvalue 
     Me.txtform1.Text = text 
    End Sub 

End Class 

正如您之前所做的那樣,Form1直接訪問Form2上的控件,從而破壞了事件的目的。

0

您可以簡單地定義一個全局變量(Public),這個變量可以從這兩個表單中訪問。

+0

爲什麼「公共」?如何封裝?這是問題,這個問題已經回答了100次。你需要停止回答這個問題,所以OP可以去找到答案。 –

相關問題