我设计的表单在单击按钮时不会打开,而是打开普通的默认表单

时间:2016-06-29 19:47:41

标签: c# vb.net forms loading menustrip

我遇到的问题是我在主屏幕上使用了menustrip,并且所有标签/按钮都在工作,除了一个,而不是打开我想要的表格,它会在向表单添加任何内容之前打开您看到的标准,简单的标准。如果我更改了我希望它打开的表单标识符,那么它可以工作,而不是使用此表单。有人知道为什么吗?这里的顶级子程序是有问题的,下面的一个是工作的。

Private Sub SupportIncidentsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SupportIncidentsToolStripMenuItem.Click 
    Dim f As frmIncidents
    f = New frmIncidents(con, AccCon)
    f.Show()
End Sub


Private Sub EmailLogsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EmailLogsToolStripMenuItem.Click
    Dim f As frmEmailLogs
    f = New frmEmailLogs(con)
    f.MdiParent = Me
    f.Show()
End Sub

2 个答案:

答案 0 :(得分:2)

使用此行,您将调用带有2个参数的构造函数

f = New frmIncidents(con, AccCon)

所以在你的frmIncidents类中你手动添加了一个像这样的构造函数

Public Sub frmIncidents(con as WhatEverConIs, Acon as WhatEverAConIs)


End Sub

但是每个表单构造函数都应该调用InitializeComponent方法,该方法是由WinForms Designer自动创建的方法,其中包含表单控件的声明和通过设计器设置的相对属性。

请参阅Very simple definition of InitializeComponent

手动添加此构造函数并查看调用Show方法时显示的空白表单我非常确定您忘记将调用添加到InitializeComponent

Public Sub frmIncidents(con as WhatEverConIs, Acon as WhatEverAConIs)

    InitializeComponent()
End Sub

答案 1 :(得分:0)

最后,答案是我的班级中有两个相互覆盖的构造函数,因此显示的是普通表单,而不是我设计的第一个构造函数所显示的形式。