Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将可见设置从false设置为true可使程序重新启动_Vb.net_Winforms_Visible - Fatal编程技术网

Vb.net 将可见设置从false设置为true可使程序重新启动

Vb.net 将可见设置从false设置为true可使程序重新启动,vb.net,winforms,visible,Vb.net,Winforms,Visible,我有两个VB.NET win32窗体的项目 一,。第一个应用程序用于与用户直接交互。它可以通过复选框激活我的实时引擎 二,。实时引擎windows启动时在后台运行的表单,但它也有复选框,所以当我直接从第1页打开它时,它应该是可见的。此表单由p1导入 所以,我希望当项目2从项目1的按钮打开时,它是可见的,因为它有其他选项,当它从窗口开始时,它是不可见的。到现在还可以,但是 当项目2已经运行时,如果我使用上面的代码从项目2启动它,它将再次触发加载事件,并且在taskmanager中将运行两个相同的进

我有两个VB.NET win32窗体的项目

一,。第一个应用程序用于与用户直接交互。它可以通过复选框激活我的实时引擎

二,。实时引擎windows启动时在后台运行的表单,但它也有复选框,所以当我直接从第1页打开它时,它应该是可见的。此表单由p1导入

所以,我希望当项目2从项目1的按钮打开时,它是可见的,因为它有其他选项,当它从窗口开始时,它是不可见的。到现在还可以,但是

当项目2已经运行时,如果我使用上面的代码从项目2启动它,它将再次触发加载事件,并且在taskmanager中将运行两个相同的进程。我只想

当我运行上面的代码时,它是可见的,而不是在新实例中再次运行

p2中的代码,即从p1调用的代码

 Public Sub formsetup()

        If normalwindow = True Then
            Me.Size = New Size(466, 459)
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
            Me.Opacity = 100
            Me.ShowInTaskbar = True
            Me.ShowIcon = True
            Me.ControlBox = True
            Me.Visible = True

        Else
            Me.Size = New Size(0, 0)
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            Me.Opacity = 0
            Me.ShowInTaskbar = False
            Me.ShowIcon = False
            Me.ControlBox = False
            Me.Visible = False
            ' Panel1.Dispose()
            ' TextBox2.Dispose()

        End If
        Application.DoEvents()
    End Sub
似乎操作me.visible=true是再次触发p2加载事件的原因

我重复一遍,我只想在p2的内存中有一个实例,当我单击p1中的按钮时,p2是可见的,而不是在新窗口中再次加载


多谢各位

在P2应用程序属性中选中“生成单实例应用程序”复选框。

现在,由于在再次激活表单时将其设置为Visible=False,因此它仍然不可见。要处理此问题,我们需要覆盖应用程序事件下的OnStartupNextInstance,单击从项目属性查看应用程序事件

Protected Overrides Sub OnStartupNextInstance(ByVal e As StartupNextInstanceEventArgs)
        MyBase.OnStartupNextInstance(e)
        MyBase.MainForm.Visible = True`
End Sub
希望这是你想要的


编辑:请注意,所提到的事件是在应用程序本身的第一个实例中引发的,而不是在尝试启动的新实例中引发的,因此不会再有任何加载的事件。

您应该显示第一个应用程序访问第二个应用程序的部分。如果这真的是两个不同的应用程序,那就说明问题了。我从应用程序1访问它。例如,在按钮1上,单击“从app1”使应用程序2可见。默认情况下,它是不可见的。我写APP2.normalwindow=true APP2.formsetup。现在,是APP2中的加载事件再次激发并在新实例中启动的时候了。代码Me.visible=true是原因,但为什么?如果不重新开始,我如何使它可见?第一个应用程序是WPF表单。第二个是Winform。我不认为这应该如此重要,不是吗?还启用了“生成单实例应用程序”复选框。这是因为代码me.visible=true与代码form2.show或form2.showdialog等效?这就是为什么我的表单从App2重新开始的原因?如果是,我还能做什么?我重复一遍,App2从Windows启动,在我从App1按钮1手动启动之前是不可见的。然后它应该是可见的,而不是启动它的新实例。如果我在App1中编写代码APP2.FORM2.VISIBLE=TRUE,则是相同的错误。。。它又开始了