【发布时间】:2014-12-18 09:39:43
【问题描述】:
我有两个 VB.NET 项目(win32 形式)
1. 第一个应用程序用于与用户直接交互。它可以选择从复选框激活我的实时引擎。
2. 实时引擎(Windows 启动时在后台运行的表单),但它也有复选框,所以当我直接从 p.#1 打开它时,它应该是可见的。此表单由 p#1 导入。
所以,我希望当从项目#1 的按钮打开项目#2 时,它是可见的(因为它有其他选项),而当它从窗口开始时,它是不可见的。到现在为止都还好,但是……
当项目 #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 只是 可见 ,不在新窗口中再次加载。
谢谢。
【问题讨论】:
-
您应该显示第一个应用程序访问第二个应用程序的部分。如果这些确实是 2 个不同的应用程序,那就更清楚了。
-
Public Sub 在 App #2 中。我从 App #1 访问它。例如,在 app#1 的 Button1_click 上,使应用程序 2 可见(默认情况下它是不可见的)我写 APP2.normalwindow = true APP2.formsetup() 。现在,是 APP#2 的 Load 事件再次触发并在新实例中启动的时候了。代码 Me.visible = true 是原因,但为什么呢?我怎样才能让它可见而无需重新开始?第一个应用程序是 WPF 表单。第二个是Winform。我不认为它应该那么重要,不是吗?制作单实例应用程序复选框也已启用。
-
因为代码 me.visible = true 与代码 form2.show() 或 form2.showdialog() 等价?这就是为什么我的 App2 表格重新开始的原因?如果是,我还能做什么?我再说一遍,App2 从 Windows 启动并且在我从 App1 button1 手动启动之前是不可见的。那么它应该只是 Visible 不启动它的新实例。如果我在 App1 中编写代码 APP2.FORM2.VISIBLE = TRUE 是相同的错误......它再次开始