【问题标题】:How to send data from Form2 to Form1 into the Form1 TextBox when the button is clicked in VB.NET?在VB.NET中单击按钮时如何将Form2到Form1的数据发送到Form1 TextBox?
【发布时间】:2016-05-14 08:26:06
【问题描述】:

我正在尝试将数据从 Form2 发送到 Form1,但它不起作用。我将仅显示图像,以便您了解问题所在。

图片如下:

这里的问题是它不能全部工作。我无法将数据发送到 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

【问题讨论】:

  • 我们在这里并没有真正看到全貌,但是Dim OBJ As New AddData 创建了一个全新的AddData 表单。您应该将当前实例保存在类级别,然后您将能够修改当前打开的实例。

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


【解决方案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

【讨论】:

    【解决方案2】:

    首先,设置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
    

    【讨论】:

      【解决方案3】:

      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
      

      【讨论】:

        【解决方案4】:

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

            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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-07
          • 1970-01-01
          • 1970-01-01
          • 2016-05-05
          • 1970-01-01
          • 2015-05-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多