![](/img/trans.png)
[英]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.