设置从false到true的可见性使程序再次启动

时间:2014-12-18 09:39:43

标签: vb.net winforms visible

我在 VB.NET (win32表格)

中有两个项目

1。第一个应用程序是与用户直接交互。它可以选择从复选框激活我的实时引擎。

2。实时引擎(窗口启动后在后台运行的表单)但它上面也有复选框,所以当我直接从p。#1打开它时,它应该是可见。此表单由p#1导入。

所以,我希望当项目#2从项目#1的按钮打开时,可见(因为它有其他选项),当它从窗口开始时,是不可见的。直到现在都没关系,但是......

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

当我运行上面的代码 VISIBLE NOT 以在新实例中再次运行时。

来自p#2的代码,从p#1调用。

 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是p#2 的加载事件再次触发的原因。

我再说一遍,我只想在p#2的内存中一个实例,当我点击p#1的按钮时,p#2只是可见在新窗口中再次加载。

谢谢。

1 个答案:

答案 0 :(得分:0)

在您的P#2应用程序属性中,选中“制作单个实例应用程序”'复选框。 enter image description here

现在,由于您在重新激活时设置了Visible = False格式,因此它仍然不可见。为了解决这个问题,我们需要覆盖应用程序事件下的OnStartupNextInstance(单击“查看项目属性中的应用程序事件”)

Protected Overrides Sub OnStartupNextInstance(ByVal e As StartupNextInstanceEventArgs)
        MyBase.OnStartupNextInstance(e)
        MyBase.MainForm.Visible = True`
End Sub

希望这是你想要的。

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