5

嗨,我必须学习 VB.net 才能获得一份以前是 C# 人的新工作。我刚刚遇到了 VB.net 的一个有趣的特性。我可以在第二个表单上引用尚未实例化的对象!

所以从 Form1 我可以得到 Form2 上 textbox1 的 text 属性,如下所示

Dim txt As String = Form2.TextBox1.Text

谁能解释这是如何工作的?是否所有表单都在程序开始时设置,然后在整个程序生命周期内切换它们的可见性?

4

1 回答 1

6

VB 中的表单是一种特殊情况。My.Forms编译器在命名空间的对象中生成一个强类型的表单列表 My。每个表单都作为一个属性公开My.Forms.TheNameOfTheForm。这些属性总是返回有效的实例——即如果一个表单之前没有被实例化,它会在你第一次使用该属性时被实例化。

到现在为止还挺好。

但微软也做出了脑死(!)的决定,即My.Forms默认从对象导入属性,无处不在,你无能为力。从表面上看,这是出于向后兼容 VB6 的原因,但这是无稽之谈,因为 VB7 (.NET 1.0) 没有此功能,它只是后来才出现的。

但只是为了澄清:

是否所有表格都在程序开始时设置...?

不,幸运的是没有。它们在您第一次访问该属性时被实例化。

于 2012-07-08T11:18:55.170 回答