我有一个非常简单的VS 2013 Windows窗体应用程序,它由3 .vb页面组成 注意 - 我'继承了'这个应用程序,并没有自己开发它。
在一个页面上创建一个应用程序对象。
Dim oVFP As Object
oVFP = CreateObject("VisualFoxPro.Application")
' Set up application object settings
oVFP.DoCmd("SET EXCLUSIVE OFF")
<... and so on ...?
在用户GUI表单上,我有一个EXIT按钮,其Click方法位于另一个.VB页面上 无论oVFP对象是否“正常”,都可以随时单击此EXIT。
由于用户可能在oVFP运行时单击“退出”按钮,我希望btnExit Click方法检查oVFP是否存在,如果存在,则终止它。
我试过了:
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
IF NOT oVFP is Nothing then
oVFP.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oVFP)
oVFP = Nothing
ENDIF
但由于oVFP是在另一个.vb页面上创建的,因此未使用btnExit方法在.vb代码页上定义。
如何在btnExit点击方法中测试应用程序对象oVFP,如果存在,则终止它。
非常感谢您的帮助/建议。
由于
答案 0 :(得分:2)
在Windows窗体应用中,您不应该谈论网页,它不是网络应用。所以我假设你在谈论3个表单实例。
有很多可能性来检查。如果表单彼此了解,则可以公开一个表单的属性,无论FoxPro对象是否已加载。然后,另一个表单可以访问该属性并决定是否可以关闭该应用程序。
或者你可以创建一个静态(在VB中共享)成员,可以在系统范围内访问(假设你没有一个项目不相互了解的解决方案)。
或者,您可以引入一个暴露该信息的单例。非常接近静态的东西。
静态成员和单身人士有建筑上的缺点,但我不认为这对于有3种形式的应用来说是一个问题。
然而,通过使用正确的术语,您可能会谷歌其他方法。试试吧:
vb.net在表单之间共享信息