你好,我需要学习VB.net来适应新工作,之前一直使用C#。我刚刚发现了VB.net的一个有趣特性。我可以引用一个尚未实例化的第二个窗体上的对象!
因此,从Form1中,我可以获取以下方式在Form2上的textbox1的文本属性:
Dim txt As String = Form2.TextBox1.Text
有人能解释一下这是如何工作的吗?所有表格都会在程序开始时实例化,然后它们的可见性会���整个程序生命周期内进行切换吗?
你好,我需要学习VB.net来适应新工作,之前一直使用C#。我刚刚发现了VB.net的一个有趣特性。我可以引用一个尚未实例化的第二个窗体上的对象!
因此,从Form1中,我可以获取以下方式在Form2上的textbox1的文本属性:
Dim txt As String = Form2.TextBox1.Text
有人能解释一下这是如何工作的吗?所有表格都会在程序开始时实例化,然后它们的可见性会���整个程序生命周期内进行切换吗?
My
命名空间的My.Forms
对象中生成一个强类型表单列表。每个表单都作为属性My.Forms.TheNameOfTheForm
暴露出来。这些属性总是返回有效的实例 - 也就是说,如果一个表单之前没有被实例化过,在您第一次使用该属性时它将被实例化。
到目前为止,一切都很好。
但微软还做了一个愚蠢的决定,即默认情况下从My.Forms
对象导入属性,而且无论何时都是这样。您无法做任何事情。表面上,这是为了向后兼容VB6,但这是荒谬的,因为VB7(.NET 1.0)没有此功能,它是后来才出现的。
但只是为了澄清:
所有表单都在程序启动时实例化吗...?
不,幸运的是不是这样。它们在您第一次访问属性时被实例化。