如何在VB.NET中单击按钮时将数据从Form2发送到Form1到Form1 TextBox?

时间:2016-05-14 08:26:06

标签: c# .net vb.net visual-studio

我正在尝试将数据从Form2发送到Form1,但它不起作用。我将只显示图像,以便您可以了解问题的全部内容。

这是图像: Visual scenario of the problem

这里的问题是它不起作用。我无法将数据发送到Form1。如何使它工作?

这是AddLesseeForm class

的VB代码
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

AddData class

的VB代码
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

4 个答案:

答案 0 :(得分:1)

你不需要创建一个AddData的对象,在VB.Net中你只能使用Form的名称调用,就像那样:

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

您可以在TextBox格式AddData中创建一种更新数据的方法,如下所示:

Public Sub UpdateData()
    TextBox1_LesseeId.Text = LesseeId
    TextBox2_LesseeNm.Text = LesseeName
End Sub

答案 1 :(得分: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

答案 2 :(得分:0)

AddLesseeForm class

的VB代码
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

AddData class

的VB代码
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

答案 3 :(得分:0)

首先,将代码放在发送按钮点击事件下面:

    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