我想了解更多關於VB.NET和多個窗體,所以我可以讓我的代碼更好。窗體內的窗體上的文本框不更新
我有一個SQL數據庫表,它包含所有14個進程的實時數據,監視程序更新顯示所有進程進度的窗體。多年前在MS Access中,我只是簡單地使用滾動子窗體來顯示錶格的內容。然而,我第一次嘗試在VB.NET中是有「很多」文本框,基本上14行文本框,我的代碼有14個非常相似的部分更新所有的文本框。必須有一個更好的辦法:(
例如:
txtProcessID1.Text TxtStatus1.Text ProgressBar1 ......
txtProcessID2.Text TxtStatus2.Text ProgressBar2 ......
txtProcessID3.Text TxtStatus3.Text ProgressBar3 ......
所以,我想拿出我在那裏創建子窗體,看起來像一個控制器行代碼,然後創建的14個實例在我的mainform上的這個子表格。
我的測試代碼似乎工作,但子窗體上的文本框沒有更新屏幕上的內容!即使當我回撥.text的內容時,這也是我所期望的。
爲什麼此示例代碼不起作用,而我的解決方案是完成此操作的最佳方式?
Public Class MainForm
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SubForm.SetText = Me.TextBox1.Text ' Try to change contents of a TextBox on the SubForm
Me.TextBox2.Text = SubForm.SetText ' Data comes back as expected, but the subform textbox remains unchanged.
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim objSubForm As New SubForm()
objSubForm.TopLevel = False
Me.Panel1.Controls.Add(objSubForm)
objSubForm.Show()
End Sub
End Class
Public Class SubForm
Public Property SetText() As String
Get
SetText = TextBox1.Text
End Get
Set(ByVal Value As String)
Me.TextBox1.Text = Value ' Control is not updated of the SubForm.
Debug.Print("Value = " & Value) ' The Value is Passed Correctly.
Debug.Print("Text = " & TextBox1.Text) ' And the property of the control has been updated.
End Set
End Property
End Class
非常感謝
千電子伏
謝謝,這工作得很好。我編輯了一下你的代碼,以從Form_Load事件中移除DIM,因爲我們現在已經在全局引用了該DIM。 – Kev 2014-12-07 10:08:46
是的,通常的複製/粘貼錯誤。我說,如果我每次能夠得到1歐元,我就會陷入這個困境中,現在我將成爲百萬富翁 – Steve 2014-12-07 10:10:46