【发布时间】:2021-07-21 00:50:22
【问题描述】:
如果我有一个值存储到 form1 的文本框中,我必须将该值传递到另一个 form2 的另一个文本框中。将值从一种形式传递到另一种形式的方法是什么?
【问题讨论】:
-
这样的东西怎么会被认为是重复的?上面的链接是 C# 示例而不是 VB 示例。
标签: vb.net
如果我有一个值存储到 form1 的文本框中,我必须将该值传递到另一个 form2 的另一个文本框中。将值从一种形式传递到另一种形式的方法是什么?
【问题讨论】:
标签: vb.net
没有。方法。
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
Click事件: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.TextBox1.Text = TextBox1.Text
End Sub
LostFocus事件: Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
Form2.TextBox1.Text = TextBox1.Text
End Sub
同样,您可以处理每个事件。
【讨论】:
为了从另一个表单中检索控件的值(例如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 方法)访问的。
【讨论】:
如果两个表单都在运行,那么你可以使用
form2.TextBox1.Text=form1.TextBox1.Text
否则,您可以在任何事件中在 Form2 中声明一个公共字符串变量,
dim Obj as new Form2
Obj.StrVariable=Me.TextBox1.Text
Obj.Show
在 Form2 加载时,
Me.TextBox1.Text=StrVariable
【讨论】:
确保在 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
【讨论】:
您可以使用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 一起使用,否则将起作用。
【讨论】:
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
【讨论】: