[英]Transfering Rows Between DataGridViews Across 2 Different Forms In VB.NET
[英]vb.net Pass Textbox Between forms.
我有两种形式。 在Form1上,我想在加载时将文本框值传递给Form 2。 我认为这是可行的。 将加载并运行Form1,并在form1中填充数据。 我在form1中公开了文本框的属性。 然后,我尝试在form2中使用该公开属性。
Public Class form1
Public ReadOnly Property GetTextBox() As String
Get
Return txtbox1.Value
End Get
End Property
在form2上
Dim X As form1
Me.TextBox1.Text = X.GetTextBox
有几种方法可以给这只猫蒙皮。
最简单的方法是为Form2
创建第二个(或替换现有的)构造函数,该构造函数接受string
作为参数。 然后,当Form1
创建Form2
您可以以这种方式传递参数。
Public Class Form2
Sub New(ByVal txt As String)
InitializeComponent()
Me.TextBox1.Text = txt
End Sub
End Class
然后在Form1
您将得到类似Dim f2 As Form2 = New Form2(myTextBox.Text)
坦白地说,其他方式基本上与此相同,除了您可以将Textbox
本身作为参数传递给构造函数,甚至可以将Form1
传递给Dim X As Form1 = theForm
构造函数。 一般而言,如果您仅需要Textbox.Text
那么您仅应在构造函数中接受string
。 如果您不需要全部控件或表单,则没有理由公开!
您当前的代码非常接近,但是正如Plutonix所评论的那样, Form2
的X
属性只是Form1
另一个实例,而不是应用程序正在显示的实际实例。
执行此操作时:
Dim X As form1
您将创建对form1
的新引用。 (大概在某个地方实例化它?或者可能依赖于VB中使用“默认”表单实例的功能 。...不这样做。请相信我,不要。)此实例与已经存在的实例。 您正在寻找的是对已经存在的实例的引用。
如果form2
有一个依赖form1
,需要对实例的引用form1
则需要在构造为参考form2
:
Private Property Form1Instance As form1
Sub New(ByVal form1Instance As form1)
Me.Form1Instance = form1Instance
End Sub
创建form2
实例时,请提供对form1
实例的引用:
Dim form2Instance As New form2(Me)
form2Instance.Show()
然后在form2
您可以引用该form1
现有实例:
Dim someVariable As String = Me.Form1Instance.GetTextBox()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.