【问题标题】:Load Event of MDi child form not firing?MDi子表单的加载事件未触发?
【发布时间】:2015-06-26 06:37:46
【问题描述】:

我有一个简单的表单,它在 vb.NET 应用程序中调用包含另一个表单的外部类。

这2个表单被设置为一个MDi父子。

有谁知道为什么当我在父代码中调用 MDIChild.show() 时,加载事件不会在子窗体中触发??

父代码:

 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

【问题讨论】:

  • 假设策略是您的表单名称,您是否简单地将 Dim ce 尝试为新策略(没有 .main),当然还确保策略具有适当的构造函数。
  • 我需要调暗为 Policies.Main,因为这是 Policies 的类之一。 “正确的构造函数”是什么意思
  • Main 很可能是您想要使用的策略中的类之一,但除非您有实际的新策略实例,否则您将永远无法访问 main。
  • Main 正在加载并出现在容器中,所以我知道这部分运行正常。但是,它从不访问加载事件。所有其他功能都在工作。
  • 我在这里搞糊涂了。policies 是您小时候尝试加载的表单的名称,还是 Main?您需要清楚哪个是您的父母和孩子。但是为了争论,它听起来好像你需要在你的父表单中这样的东西。 Dim ce as New child, ce.show(), 如果孩子在其代码中定义了加载事件,该事件应在显示时自动调用,但您必须先实例化孩子。

标签: vb.net winforms mdi mdichild mdiparent


【解决方案1】:

对 继上面的 cmets 之后。打开 Visual Studio 并创建一个简单的 Winforms 项目。它将使用 Form1 的默认实例创建。

在解决方案资源管理器中右键单击解决方案并选择添加,然后从出现的菜单中选择 Windows 窗体。将使用默认名称 Form2 创建一个新的 windows 窗体。

我们将把表单 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 方法。

【讨论】:

  • 我现有代码中使用过这个principal,一直没有出现messagebox,表示永远不会触发child的load事件
  • 您能否真正添加您父母的完整代码,以及您尝试调用的孩子作为您问题的编辑。这将有助于找出什么不起作用。
  • 我已删除父项中的所有引用,并全部阅读,现在它似乎按预期工作。一切都非常离奇。无论如何感谢您的帮助
猜你喜欢
  • 2013-11-23
  • 2017-05-08
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2017-03-20
  • 2011-10-28
相关资源
最近更新 更多