在vb.net中引用未安装的对象

时间:2012-07-08 11:13:58

标签: vb.net

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

因此,从Form1我可以在Form2上获得textbox1的text属性,如下所示

Dim txt As String = Form2.TextBox1.Text

任何人都可以解释这是如何工作的吗?是否所有表格都在程序开始时实现,然后在整个程序生命周期内切换它们的可见性?

1 个答案:

答案 0 :(得分:6)

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

到目前为止,非常好。

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

但只是为了澄清:

  

所有表格都是在程序开始时实现的吗??

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