MDi子表单的加载事件没有触发?

时间:2015-06-26 06:37:47

标签: vb.net winforms mdi mdichild mdiparent

我有一个简单的表单,它在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

1 个答案:

答案 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方法。

相关问题