【发布时间】:2022-01-16 19:28:10
【问题描述】:
我遇到了与this 中描述的几乎相同的问题,但使用的是 VB.NET。有一个 Form1 作为启动窗口自动打开,所以我找不到用于访问它的实例。从 Form1 中打开了一个 Form2。我尝试使用关键字“Me”传递 Form1 的实例:
Private Sub Button1_click(...) Handles Button1.Click
Dim childform as new Form2(Me)
childform.show()
End Sub
在 Form2 中我有:
Public Sub New(parentform As System.Windows.Forms.Form)
InitializeComponents()
MessageBox.Show(parentform.Button1.Text)
End Sub
编译时出现错误:“Button1 不是 Form 的成员”。 那么如何将Form1实例正确传递给Form2呢?
另外,我想从 Form2 更改 Form1 的 Button1 的一些属性。 Button1 在 Private Sub 中声明,但如果我正确传递实例,我是否仍可以从 Form2 访问它?如果没有,我可以在 Form1 中声明一个子,例如
Public Shared Sub ChangeText(newtext As Sting)
Me.Button1.Text=newtext
End Sub
这样就可以了?
【问题讨论】:
-
错误信息
Button1 is not a member of Form非常准确地反映了问题。 Button1 不是Form的成员...但它是Form1的成员。无论哪种方式,应该首选带有ChangeText方法的变体,因为它更干净。 (在您的情况下,它可能不起作用,因为它被声明为Shared,这意味着不能使用Me)
标签: vb.net visual-studio winforms