我有一个简单的表单,它在vb.NET应用程序中调用包含另一个表单的外部类。
将2个表单设置为MDi父级和子级。
有人知道为什么当我在父代码中调用MDIChild.show()时,load事件不会在子窗体中触发吗?
家长代码:
Dim ce As New Policies.Main
ce.MdiParent = Me
ce.Show()
儿童代码
Public Sub Main_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
'Do some stuff in load event
End Sub
答案 0 :(得分:1)
右 继上述评论之后。打开visual studio并创建一个简单的Winforms项目。它将使用Form1的默认实例创建。
在解决方案资源管理器中右键单击解决方案并选择添加,然后从出现的菜单中选择Windows窗体。将创建一个新的Windows窗体,其默认名称为Form2。
我们将表格1视为我们的父类,并将表格2视为我们的孩子。
返回表单并从工具箱中将一个按钮拖到其上。双击表单上的按钮,打开其默认按钮单击处理程序。
添加以下代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.IsMdiContainer = True 'we need this so that Form1 can act as a container for other forms
Dim frm As New Form2
With frm
.MdiParent = Me
.Show()
End With
End Sub
现在返回form2。双击它以在代码编辑器中显示其默认加载事件。添加以下代码。
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("Hi, I'm being shown from the load event of form2")
End Sub
完成后,按f5运行这个非常简单(粗略)的例子。 Form1将加载。单击该按钮时,将创建一个新的Form2实例。在显示表单之前,它的load事件被触发并触发te消息框以显示它的消息。您无需直接调用load方法。