【问题标题】:How do you close form1, open form2 and soon after returning to form1 and closing form2? I'm having trouble with reference你如何关闭form1,打开form2并在返回form1并关闭form2后不久?我在参考时遇到问题
【发布时间】:2019-06-22 23:29:27
【问题描述】:

--

Private Sub ACTIVECLOSEToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ACTIVECLOSEToolStripMenuItem.Click
    Dim Nform As New Aba_Principal_SecondShift
    Nform.Show()
    Hide()
End Sub

Private Sub CREATEWORKNUMBERToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CREATEWORKNUMBERToolStripMenuItem.Click
    Dim Nform2 As New Aba_Principal_ThirdShift
    Nform2.Show()
    Hide()
End Sub

我的问题是因为如果我把相反的过程我得到以下错误:“无法添加引用。将此项目添加为引用会导致循环依赖。”

【问题讨论】:

  • 您是在隐藏,而不是关闭这些表单。您可以使用 VB.Net 提供的默认实例来引用您的表单。此处无需New 表单,只需Show() 即可。这在 C# 中会很糟糕,因为你会 new 一个已经存在的 Form 的实例(它只是被隐藏了)。第二个表单可以关闭而不是隐藏,这取决于它的用途。
  • 你说的逆向处理是什么意思?

标签: vb.net forms winforms


【解决方案1】:

也许这会有所帮助: 我刚刚修改了您的代码,我已将 fc 声明为表单并为其赋值 在您的应用程序中打开表单,之后我创建了一个if statement 然后如果fc 是一个开放表单,则关闭它并显示您要显示的表单。 PS:不要忘记在代码中添加Try Catch Exception,以防止应用程序崩溃。

Private Sub ACTIVECLOSEToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ACTIVECLOSEToolStripMenuItem.Click
       Dim fc As Form = Application.OpenForms("Form2")
        If fc IsNot Nothing Then fc.Close()
        form1.Show()
End Sub

Private Sub CREATEWORKNUMBERToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CREATEWORKNUMBERToolStripMenuItem.Click
       Dim fc As Form = Application.OpenForms("Form1")
        If fc IsNot Nothing Then fc.Close()
        form2.Show()
End Sub

【讨论】:

    【解决方案2】:

    正如 Jimi 在 cmets 中所说,您不需要将新表格调暗;您只需要使用.show() 打开它们,如下所示。这是假设您调用了您的第一个表单Nform1 和您的第二个表单Nform2。如果没有,只需将名称替换为您选择的名称

    Private Sub ACTIVECLOSEToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ACTIVECLOSEToolStripMenuItem.Click
        Nform1.Show()
        Me.Close()
    End Sub
    
    Private Sub CREATEWORKNUMBERToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CREATEWORKNUMBERToolStripMenuItem.Click
        Nform2.Show()
        Me.Close()
    End Sub
    

    您在关闭启动窗体时可能会遇到问题,因为默认情况下,Visual Basic 会在发生这种情况时关闭您的整个程序,您可以在下面的Shutdown mode: 下看到

    您可以将其改为When last form closes

    您可以在项目的设置应用程序选项卡中找到这些。以下是在哪里找到它的示例:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多