如何将表单1的textbox1的文本内容放到form2的textbox1中?
例如,我想在form1.textbox1中输入一个名称,然后我希望它也出现在form2.textbox1中,但是不允许用户编辑form2.textbox1中显示的名称
如果您推荐其他方法,我将不胜感激。
我认为可行的第一件事是form2.textbox1.text = form1.textbox1.text
,但它没有显示form2的textbox1到form2的textbox1的内容。
这是我的简单程序的屏幕截图。 http://imgur.com/a/QPEzt 在form1中,我有一个文本框和一个按钮。 用户将在文本框中输入文本,然后如果他单击按钮,程序将转到form2。在form2中,我有一个文本框。 form2中的文本框将显示用户在form1中输入的文本。
答案 0 :(得分:0)
订阅TextChanged
活动以轻松"克隆"它的文字。
Form1.vb:
Public Class Form1
Private Sub TextBox_Form1_TextChanged(sender As Object, e As EventArgs) _
Handles TextBox_Form1.TextChanged
Form2.TextBox_Form2.Text = DirectCast(sender, TextBox).Text
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) _
Handles Button1.Click
Form2.Show()
End Sub
End Class
Form2.vb:
Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
Me.TextBox_form2.ReadOnly = True
End Sub
End Class
答案 1 :(得分:0)
我建议使用不同的方法。第二种形式(更具体地说是Form2类的实例)应该由它自己的控件负责。它不应该允许外部Forms实例更改其内部行为。 (用纯OOP的说法,这就是封装概念)
Form2实例唯一需要知道的是它应该监视哪个外部TextBox控件并显示此外部控件中发生的更改
所以你可以写这样的东西
在Form1类中单击按钮
Public Sub button1_click(sender as Object, e as EventArgs)
Dim f2 = new Form2(textBoxOnForm1)
f2.Show()
End Sub
在这里,您使用Form2的特定构造函数传递对Form1托管的文本框控件的引用。这样,任何想要重用Form2类提供的功能的客户端代码都需要传递相应的文本框。
在Form2类中添加一个新的特定构造函数,该构造函数接收Form1想要创建Form2实例时传递的TextBox
public class Form2 : Inherits Form
Sub New(ByVal textBoxOnForm1 as TextBox)
' Always required before acting on controls
InitializeComponent()
AddHandler textBoxOnForm1.TextChanged, AddressOf text_Changed
textBoxOnForm2.Text = textBoxOnForm1.Text
End Sub
现在,Form2类构造函数引用了外部TextBox来监视(无论它来自何处)并添加接收TextBox传递的TextChanged事件的事件处理程序(再次,你不介意这个TextBox控件的位置)位于)
Sub text_Changed(sender as Object, e as EventArgs)
Dim tFromForm1 = DirectCast(sender, TextBox)
Me.textBoxOnForm2.Text = tFromForm1.Text
End Sub
事件处理程序只是使用外部控件的文本更新内部文本框。现在,如果你想为textChanged事件实现不同的行为,你只需要在类Form2中工作
答案 2 :(得分:0)
:
Public Sub SetTextbox1Value(ByVal Value As String)
TextBox1.Text = Value
End Sub
表格1上的:
如果是自动实例:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Form2.textboxInForm2.Text = TextBox1.Text
End Sub
如果您定义了实例:
Private _form2 As New Form2
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
_form2.SetTextbox1Value(TextBox1.Text)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
_form2.Show()
End Sub
请注意,添加了一个用于调用表单2的按钮
表单2中的方法可能是必要的,但我不确定您如何实例化您的表单。
答案 3 :(得分:0)
您可能尝试在Text
初始化(显示)之前或TextBox
被释放(关闭)之后设置Form2
的{{1}}。 确保两个表单都已打开并尝试使用:
Form1
答案 4 :(得分:0)
如果要在一种形式中向另一种形式的文本框显示某些值,请执行此操作。
将frm报告设为新的frm登录 frmReport.textbox1.text =(您要打印的值) frmReport.show()
在此代码中,frmReport只是一个新的veriable,您可以定义任何名称 frmLogin是我的表单名称,我想在frmLogin表单文本框中显示该值。 然后必须显示日期,例如frmReport.show(),否则将不会在文本框中显示