DotNet · 2022年5月2日

My.Forms简要理解说明

当启动时设置为主窗体的时候,在主窗体以外的地方可以使用My.Forms.主窗体来访问其实例,
但当调用的线程不是主线程时,则My.Forms.主窗体则不为同一个实例,而是一个新的实例,所以除非确保访问时,访问代码处于主线程,否则不推荐使用此方法来访问主窗体中的实例对像


My.Forms.XXX的实现,主要是通过get和set属性来操作的,在第一次Get的时候,可以生成一个新实例,
当用Is 或 IsNot来判断这个属性时是例外,不会生成新对像
可以通过set来传递 nothing,使系统释放这个对像,传递其他则会抛出异常

适合小规模的程序,推荐使用,

示例如下:
模式窗体:
            Using My.Forms.FMWeekReport
                With My.Forms.FMWeekReport
                    .ShowDialog()
                    .Close()
                End With
            End Using

非模式窗体:不能使用using
            With My.Forms.FMDayReport
                .MdiParent = Me
                .Show()
            End With



My.Forms感觉就是给
VB6.0的用户找回一个以前的窗体编程模式,
因为My.Forms虽然在My命名空间中,但是使用它并不需要输入My.Forms。而且My.Forms为项目中每一个窗体维护了一个默认实例,其实现方法很像Singleton模式——每个窗体都有一个默认实例,而且有一个全局访问点,就通过窗体的类名即可访问到。假设有两个窗体——Form1和
Form2,Form1是启动窗体,现在你要用代码显示Form2,只需Form2.Show即可。要在Form2中修改Form1中一个TextBox
的文字,只需要这样:Form1.textBox1.Text =
“Hello”即可。My.Forms的功能是解决窗体互访的最佳模式,同时也不会浪费内存,因为它只有在第一次访问所需窗体的时候才建立它。

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞