【问题标题】:How to pass value of a textbox from one form to another form如何将文本框的值从一个表单传递到另一个表单
【发布时间】:2021-07-21 00:50:22
【问题描述】:

如果我有一个值存储到 form1 的文本框中,我必须将该值传递到另一个 form2 的另一个文本框中。将值从一种形式传递到另一种形式的方法是什么?

【问题讨论】:

标签: vb.net


【解决方案1】:

没有。方法。

1.使用TextChanged事件。

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Form2.TextBox1.Text = TextBox1.Text
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Form2.Show()
    End Sub
  1. 使用Click事件:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Form2.TextBox1.Text = TextBox1.Text
    End Sub
  1. 使用LostFocus事件:
    Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        Form2.TextBox1.Text = TextBox1.Text
    End Sub

同样,您可以处理每个事件。

【讨论】:

    【解决方案2】:

    为了从另一个表单中检索控件的值(例如TextBox.Text),最好的方法是创建一个模块并为私有变量创建一个属性。

    保存客户名字的属性示例:

    Module modPrivateVariables
    
    Private strCustomerFirstNameSTR As String
    
        Public Property getCustomerFirstNameSTR() As String
            Get
                Return strCustomerFirstNameSTR
            End Get
            Set(ByVal strCustomerFirstName As String)
                strCustomerFirstNameSTR = strCustomerFirstName
            End Set
        End Property
    
    End Module
    

    然后在文本框的 TextChanged 事件中使用属性getCustomerFirstNameSTR 来保存文本框的文本。例如,如果您有一个名为 (txtCustomerFirstName) 的文本框,则在其 TextChanged 事件下您将输入 getCustomerFirstNameSTR = txtCustomerFirstName.Text

    文本框的文本现在将分配给getCustomerFirstNameSTR 属性。现在,您将能够从应用程序中的任何位置和任何形式访问此属性的值。例如,如果您有一个名为“txtBoxInForm2”的 Form2 格式的文本框,您可以调用 txtBoxInForm2.Text = getCustomerFirstNameSTR

    如果您想清除该属性的值,只需键入getCustomerFirstNameSTR = String.Empty。要理解的主要内容是,当您以一种形式(类)创建变量并尝试从另一种形式(另一个类)访问其值时,必须重新实例化该变量一次。

    发生这种情况后,变量将重置为其默认值,即空字符串。这将导致您每次从另一个表单调用它时都得不到任何东西(一个空的文本框)。属性不需要重新实例化,因为它们是通过属性本身内的公共方法(get 和 set 方法)访问的。

    【讨论】:

      【解决方案3】:

      如果两个表单都在运行,那么你可以使用

       form2.TextBox1.Text=form1.TextBox1.Text
      

      否则,您可以在任何事件中在 Form2 中声明一个公共字符串变量,

      dim Obj as new Form2
      Obj.StrVariable=Me.TextBox1.Text
      Obj.Show
      

      在 Form2 加载时,

      Me.TextBox1.Text=StrVariable
      

      【讨论】:

        【解决方案4】:

        确保在 Form1.vb 中使用 Button.Click 等事件并在其中

         Dim obb As New Form2
         obb.val = Me.TextBox1.Text()
         obb.Show()
         Me.Hide()
        

        在 Form2.vb 中使用一个名为“val”的属性

        Public Property val As String
        

        在像 MyBase.Load 这样的事件上

        TextBox1.Text = val
        

        【讨论】:

          【解决方案5】:

          您可以使用button1_click 并在此处声明:

          Dim obj as new form2
          Obj.pass=me.textbox1.text
          
          Obj.show()
          

          然后在您的 form2 before 您的 form2 主类中声明:

          Public property pass as string 
          

          关于加载状态

          Textbox1.text=pass

          现在,当您单击 form1 上的按钮时,将显示 form2,并且 form2 上的 textbox1 将具有与 form1 中相同的文本。前提是您仅将其与文本框、标签或其他类型的 STRING 一起使用,否则将起作用。

          【讨论】:

            【解决方案6】:
            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            
            ' timer1 must be set to true
            
            Timer1.Start() Form1.Show() Me.Hide()
            
            Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
                Form1.TextBox13.Text = TextBox1.Text
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-07-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多