在VB6中多个窗体的间可以很方便地互相如:在Form1中只需要用条“Form2.Show” 语句就能显示窗体Form2然而在VB.NET中窗体处理机制发生了很大变化:在访问窗体的前你必须进行窗体例子化;如果在项目中有多处代码访问同窗体则你必须把它同例子指针传递给这些代码否则新创建窗体例子就不再是原先窗体了
下面代码实现窗体Form1和Form2的间互相,Form1为主窗体Form1上按钮BtnShowFrm2标题为“显示Form2”Form2上按钮BtnShowFrm1标题为“显示Form1”
1、Form1中代码:
Public Class Form1Class Form1
Inherits .Windows.Forms.Form
’创建Form2个新例子
Dim Frm2 As New Form2
Public Function Instance2Function Instance2(ByVal frm As Form2)
Frm2 = frm
End Function
Private Sub BtnShowFrm2_ClickSub BtnShowFrm2_Click(ByVal sender As .Object, ByVal e As .EventArgs) _
Handles BtnShowFrm2.Click
’以下语句保证在Form2以及其他窗体中访问Form1时
’都将得到Form1同个窗体例子
Frm2.Instance(Me)
Frm2.Show
Me.Hide
End Sub
End Class
2、Form2中代码:
Public Class Form2Class Form2
Inherits .Windows.Forms.Form
Dim frm1 As Form1
’借助个新增Instance属性来生成窗体frm1例子
Public Function InstanceFunction Instance(ByVal frm As Form1)
frm1 = frm
End Function
Private Sub BtnShowFrm1_ClickSub BtnShowFrm1_Click(ByVal sender As .Object, ByVal e As .EventArgs) _
Handles BtnShowFrm1.Click
Me.Hide
frm1.Show
End Sub
Private Sub Form2_ClosedSub Form2_Closed(ByVal sender As Object, ByVal e As .EventArgs) Handles MyBase.Closed
’如果Form2被关闭则设置Form1按钮BtnShowFrm2不可用
frm1.BtnShowFrm2.Enabled = False
frm1.Show
End Sub
End Class
最新评论