我知道,有很多與此有關的問題,但我仍然找不到一個可行的解決方案。另一種形式的VB.NET呼叫子
通常情況下,它的工作是這樣的:一個表單創建另一種形式的實例中是這樣的容器:
Dim PolInstIn As New SubForm1
Private Sub LoadDetail()
PolInstIn.TopLevel = False
PolInstIn.Name = "Sub From"
PolInstIn.FormBorderStyle = Windows.Forms.FormBorderStyle.None
PolInstIn.Dock = DockStyle.Fill
Me.GroupBox6.Controls.Add(PolInstIn)
PolInstIn.Show()
End Sub
然後可以很容易地從子窗體像這樣調用公用Sub:
Call PolInstIn.MyPublicSubInSubForm1()
但是,在這種情況下,這對我不起作用。當我運行MyPublicSubInSubForm1()時,它不會拋出任何錯誤,但不會執行任何操作。如果我向SubForm1文本框寫入一個值並將其讀回,它會讀取,但我沒有在屏幕上看到它,所以我懷疑它是寫入其他一些實例的實例。
我懷疑這是因爲我的父窗體也是一個實例的窗體創建像SubForm1非常類似的方式。基本上,ParentForm是一個加載到tabPage中的表單,SubForm1是一個加載到ParentForm中的模塊。它可以存在許多副本(選項卡)。
你能指出任何簡單的解決方案嗎?
問候,
Libor的
這將允許在窗體的已知實例中調用LoadDetail子。上面的麻煩是定義/發現了一個實例。我通過在子表單中定義一個父表單的Public對象來解決這個問題,並且在創建子表單的實例時,我將父表單的一個實例分配給該對象。我會回答這個問題(我應該這樣做......) – 2016-04-25 11:48:56
好消息。我會用你的提示改進我的代碼。多謝你們 – 2016-04-26 00:10:25