我在 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只是可见 ,不在新窗口中再次加载。
谢谢。
答案 0 :(得分:0)
在您的P#2应用程序属性中,选中“制作单个实例应用程序”'复选框。
现在,由于您在重新激活时设置了Visible = False
格式,因此它仍然不可见。为了解决这个问题,我们需要覆盖应用程序事件下的OnStartupNextInstance
(单击“查看项目属性中的应用程序事件”)
Protected Overrides Sub OnStartupNextInstance(ByVal e As StartupNextInstanceEventArgs)
MyBase.OnStartupNextInstance(e)
MyBase.MainForm.Visible = True`
End Sub
希望这是你想要的。
编辑:请注意,上述事件是在应用程序本身的第一个实例中引发的,而不是新尝试启动的实例,因此不会出现任何加载的事件。