2016-05-14 84 views
-1

我想從Form2發送數據到Form1,但它不起作用。我只會展示圖片,以便您瞭解問題所在。在VB.NET中單擊按鈕時如何將Form2中的數據發送到Form1到Form1文本框中?

以下是圖像: Visual scenario of the problem

這裏的問題是它不工作的所有。我無法將數據發送到Form1。如何使它工作?

下面是AddLesseeForm class

Public Class AddLesseeForm 'Form2 

    'This is the Select Button 
    Public Sub Button4_SelectLessee_Click(sender As Object, e As EventArgs) Handles Button4_SelectLessee.Click 

     'Send data to AddData Form. The problem is it doesn't work 
     Dim OBJ As New AddData 

     OBJ.LesseeId = TextBox1_LesseeID.Text 
     OBJ.LesseeName = TextBox2_LesseeName.Text 

    End Sub 
End Class 

VB代碼VB代碼爲AddData class

Public Class AddData 'Form1 

    Private Sub Button1_AddLesseeForm_Click(sender As Object, e As EventArgs) Handles Button1_AddLesseeForm.Click 
     AddLesseeForm.Show() 

    End Sub 

    Public Property LesseeId As String 
    Public Property LesseeName As String 


    Public Sub AddData_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     'Receive data from AddLesseeForm 
     TextBox1_LesseeId.Text = LesseeId 
     TextBox2_LesseeNm.Text = LesseeName 
    End Sub 
End Class 
+0

我們真的沒有看到完整的圖片在這裏,但'昏暗的OBJ作爲新AddData '創建一個全新的'AddData'表單。您應該將當前實例保存在類級別,然後您可以修改當前打開的實例。 –

回答

1

你不需要創建的AddData對象,在VB.Net你可以與一個只有名字稱呼形式如下:

Public Sub Button4_SelectLessee_Click(sender As Object, e As EventArgs) Handles Button4_SelectLessee.Click 

     AddData.LesseeId = TextBox1_LesseeID.Text 
     AddData.LesseeName = TextBox2_LesseeName.Text 
     AddData.UpdateData() 
End Sub 

你可以創建一個我的ThOD在AddData表像這樣TextBox更新數據:

所有的
Public Sub UpdateData() 
    TextBox1_LesseeId.Text = LesseeId 
    TextBox2_LesseeNm.Text = LesseeName 
End Sub 
0

首先,設置你的LesseeIdLesseeName屬性將不會更新任何內容。僅僅因爲你在Form Load事件中將它們分配給了某些事件,並不意味着它們綁定了這些控件。

其次,Dim OBJ As New AddData創建一個全新的AddData形式與它自己的參考。所以你要設置一個你永遠不會顯示的表單的屬性。

爲了解決這個問題,你可以顯示AddLesseeForm與它的所有者設置爲AddData

Private Sub Button1_AddLesseeForm_Click(sender As Object, e As EventArgs) Handles Button1_AddLesseeForm.Click 
    AddLesseeForm.Show(Me) 
End Sub 

現在AddLesseeForm的主人是你AddData形式,你可以這樣做:

Public Sub Button4_SelectLessee_Click(sender As Object, e As EventArgs) Handles Button4_SelectLessee.Click 
    If Me.Owner IsNot Nothing AndAlso Me.Owner.GetType() Is GetType(AddData) Then 
     Dim AddDataFrm As AddData = DirectCast(Me.Owner, AddData) 
     AddDataFrm.LesseeId = TextBox1_LesseeID.Text 
     AddDataFrm.LesseeName = TextBox2_LesseeName.Text 
    End If 
End Sub 

這將獲得所有者(當前實例AddData)並且能夠修改它。

最後,你應該改變AddData屬性,使他們真正更新您的文本框:

Private _lesseeid As Integer = 0 
Private _lesseename As String = "" 

Public Property LesseeId As Integer 
    Get 
     Return _lesseeid 
    End Get 
    Set(value As Integer) 
     _lesseeid = value 
     TextBox1_LesseeId.Text = value.ToString() 
    End Set 
End Property 

Public Property LesseeName As String 
    Get 
     Return _lesseename 
    End Get 
    Set(value As String) 
     _lesseename = value 
     TextBox2_LesseeNm.Text = value 
    End Set 
End Property 
0

VB代碼AddLesseeForm class

Public Class AddLesseeForm 'Form2 

     'This is the Select Button 
     Public Sub Button4_SelectLessee_Click(sender As Object, e As EventArgs) Handles Button4_SelectLessee.Click 

      AddData.loadLessee(TextBox1_LesseeID.Text, TextBox2_LesseeName.Text) 

     End Sub 
    End Class 

VB代碼AddData class

Public Class AddData 'Form1 

    Private Sub Button1_AddLesseeForm_Click(sender As Object, e As EventArgs) Handles Button1_AddLesseeForm.Click 
     AddLesseeForm.Show() 

    End Sub 

    Public Sub loadLessee(LesseeId As String, LesseeName As String) 

     TextBox1_LesseeId.Text = LesseeId 
     TextBox2_LesseeNm.Text = LesseeName 

    End Sub 

    Public Sub AddData_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    End Sub 
End Class 
0

首先你把下面的代碼放在發送b上utton單擊事件:要獲得價值

Private Sub button1_Click(sender As Object, e As EventArgs) 
    Dim objtest As New test2(txtLesseeid.Text, txtLesseename.Text) 
    objtest.ShowDialog() 
End Sub 

在第二種形式,你應該把這個代碼:

Public Partial Class test2 
    Inherits Form 
    Public Sub New(strtext1 As String, strtext2 As String) 
     InitializeComponent() 
     txtLesseeid.Text = strtext1 
     txtLesseename.Text = strtext2 
    End Sub 

End Class 
相關問題