VBA 代码关闭了我单独的 .Net Winform 应用程序?
Posted
技术标签:
【中文标题】VBA 代码关闭了我单独的 .Net Winform 应用程序?【英文标题】:VBA Code closes my separate .Net Winform App? 【发布时间】:2009-07-02 12:58:52 【问题描述】:以下代码是我们的BA编写的Access App的关闭例程。执行时,它不仅会在同一台计算机上关闭 Access App,还会关闭我的 C# winform app。 Access 应用程序名为 DME Referral,我的 winform 应用程序主进程在任务管理器中作为 MATRIX.exe 运行。(是的,我正在对 MATRIX 进行编程...永远不要让一群社会工作者和护士为你的项目命名!)
我在 Access(VBA) 编程方面做的不多,所以我希望这里有人能提供帮助。
Private Sub cmdClose_Click()
On Error GoTo Err_cmdClose_Click
Call ToggleVisible
DoCmd.Quit
Exit_cmdClose_Click:
Exit Sub
Err_cmdClose_Click:
MsgBox Err.Description
Resume Exit_cmdClose_Click
End Sub
Private Sub ToggleVisible()
Me.txtLastNameCrit.Visible = False
Me.txtFirstNameCrit.Visible = False
Me.cmdSearch.Visible = False
Me.cmbCoor.Visible = False
Me.cmdSearchByCoor.Visible = False
Me.txtStartDate.Visible = False
Me.txtEndDate.Visible = False
Me.cmdDMEReport1.Visible = False
End Sub
【问题讨论】:
我现在正试图从 BA 那里得到这个。 它带您进入 ActiveX 库。虽然没有代码。 从 Access 中的内存中,DoCmd.Quit 是一个内置的退出应用程序。您可以尝试使用 Spy++ 来观察您的 C# 应用程序的窗口,以查看(是否)有人向它发送 WM_QUIT 或其他任何内容。 您的代码对我来说似乎很奇怪。为什么在关闭应用程序之前隐藏窗体上的控件?另外,我认为将错误处理程序包裹在 DoCmd.Quite 是有问题的——在我看来,您的错误处理程序应该在您调用的代码中,即 ToggleVisible (尽管在运行时几乎不会出错)。一件小事:我使用 Application.Quit 而不是 DoCmd.Quit。如果您在 Access 的即时窗口中键入 Quit 并按 F1 以获取帮助,您会发现 DoCmd.Quit 已被弃用,取而代之的是 Application.Quit,即使它们是等效的。 【参考方案1】:DoCmd.Quit
应该只是关闭 MS Access 部分;这很标准。
我愿意成为正在发生的两件事中的一件。
1) 焦点已切换到 C# winform 应用程序,它正在捕获关闭信号。在这种情况下,我们可以明确地将焦点设置回 MS Access 表单。你可以通过Me.SetFocus
做到这一点。
或者
2) C# winform 应用程序。正在从 MS Access 启动;当父应用程序关闭时,子应用程序也是如此。在这种情况下,我们可能不得不改变 C# winform 应用程序的方式。启动。当您手动关闭 MS Access(点击右上角的“X”)时,它是否也会关闭?
【讨论】:
以上是关于VBA 代码关闭了我单独的 .Net Winform 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
使用宏或 VBA 正确关闭 access 2003 中的隐藏窗口?