作为我用 VB.NET 表单编写的程序的一部分,可以选择删除数据库的内容。此功能不打算在最终版本中经常使用,我不希望用户意外单击该按钮并在不想删除内容时删除内容。
我认为带有“是”和“否”按钮的简单消息框不会解决这个问题,因为我听说有几个人在程序中做了他们不想做的事情,即使采取了这样的措施。因此,我希望弹出的消息框有一个“否”按钮和一个复选框,需要勾选该复选框才能显示“是”按钮。但是,不存在具有此功能的默认消息框。经过进一步研究,我决定创建一个定制的。它在大多数情况下都有效,但是,无论我是否勾选复选框并按“是”或是否按“否”,它都会清除数据库。
下面是用于清除数据库的代码:
Private Sub btnClearDatabase_Click(sender As Object, e As EventArgs) Handles btnClearDatabase.Click
'Opens the Clear Database dialog to confirm if the user wants to clear the database.
ClearDatabase.ShowDialog()
If ClearDatabase.DialogResult.OK Then
'Clears Database. Code not shown
End If
End Sub
我将“yes”按钮的 DialogResult 属性设置为“确定”,因此我假设 If 语句中的代码仅在按下该按钮时才会运行。但无论我是否按下它,它都会运行。当我打开对话框时它会运行。为什么要这样做?
这可能与 If 语句代码中的警告有关:
BC42025 通过实例访问共享成员、常量成员、枚举成员或嵌套类型;不会评估限定表达式。
重写If ClearDatabase.DialogResult.OK Then
为If DialogResult.Ok Then
消除了警告,但运行它仍然有相同的结果。我真的很困惑为什么要这样做。
编辑:为了澄清,代码在对话框打开时不会运行。它在对话框关闭时运行。