我正在尝试将数据从Form2发送到Form1,但它不起作用。我将只显示图像,以便您可以了解问题的全部内容。
这里的问题是它不起作用。我无法将数据发送到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
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 :(得分: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)
首先,设置LesseeId
和LesseeName
属性不会更新任何内容。仅仅因为您在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
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
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