2012-08-01 123 views
1

我想知道是否有方法知道是否单击了窗体窗体按钮。我知道CloseButton属性,但似乎只能启用或禁用它。当用户浏览我的应用程序时,我有表单关闭,但只有在关闭按钮时才关闭数据库。所以我需要关闭事件来区分何时通过编程关闭它或通过Windows按钮关闭用户。我可以使用布尔检查,但想知道是否有更优雅的方式。Access 2010窗体关闭按钮

此外,如果有一种方法可以完全删除按钮,而不是只是看起来丑陋,这将是惊人的,但我读了这可能是不明智的,因为这是一个Windows设置。

+0

你是什么意思的“窗体按钮”? – HansUp 2012-08-01 18:53:30

+0

@HansUp嗨汉斯,对不起,我有表单设置为弹出,我的意思是说,有没有办法让我检查关闭按钮是否被点击。我真的很想完全删除它并使用我自己的。但正如我所说,我听说这是不可取的。 – HelloWorld 2012-08-01 19:00:19

+0

如果我现在明白了,我会选择你认为不雅的方式。您的自定义关闭按钮将变量设置为“True”。在'Form_Unload'处,检查该变量,如果不是'True',则取消卸载。然后只能通过您的自定义关闭按钮关闭表单。即使试图关闭Access本身也不会允许窗体关闭,并会中止Access关闭。 – HansUp 2012-08-01 19:12:39

回答

1

下面是一个窗体的代码模块,其中包含一个名为cmdClose的命令按钮。除了cmdClose点击事件外,表单无法关闭。即使试图关闭Access本身也不会允许窗体关闭,并会中止Access关闭。

Option Compare Database 
Option Explicit 

Private Sub cmdClose_Click() 
    AllowClose "close" 
    DoCmd.Close acForm, Me.Name 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
    If AllowClose = False Then 
     Cancel = True 
     MsgBox "close aborted" 
    End If 
End Sub 

Private Function AllowClose(Optional ByVal pClose As String) As Boolean 
    Static blnClosedFromCode As Boolean 
    If pClose = "close" Then 
     blnClosedFromCode = True 
    End If 
    AllowClose = blnClosedFromCode 
End Function 
+0

@HelloWorld我意识到这是你不想要的。但是,我提供它以防其他人可能会觉得它有用。我不认为这一切都很不雅。这很有效,我认为很简单。 – HansUp 2012-08-01 19:45:08

0

总之,我不认为自己是一个办法,但所提供的代码HansUp是围绕工作。我禁用顶部的关闭按钮以确保数据被保存。