我有一个包含组合框的表单,我正在插入错误检查以检查用户是否在从组合框中选择有效值之前点击确定按钮它会掩盖错误并使表单保持焦点,直到用户选择一个合适的值,但在我的情况下提出错误后应用程序仍然关闭,我按下确定后,你会帮我识别我的错误 这是我的代码
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Try
If SymbolComboBox.SelectedValue Is Nothing Then
Throw New Exception()
Else
ErrorProvider1.SetError(SymbolComboBox, String.Empty)
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End If
Catch ex As Exception
ErrorProvider1.SetError(SymbolComboBox, "Error")
End Try
End Sub
提前谢谢
太平绅士
答案 0 :(得分:3)
您的确定按钮是表单的默认接受按钮吗?如果是这样,我相信它总是会返回System.Windows.Forms.DialogResult.OK,无论结果如何,除非你专门取消动作。我不记得如何取消操作,但如果是这种情况,我会删除你删除表单的AcceptButton属性。
或,
即使没有选择任何内容(如空字符串),SymbolComboBox.SelectedValue也可能永远不会“无”吗?我会改用selectedIndex并检查它是否等于-1。
希望有所帮助。
答案 1 :(得分:2)
我不确定,但我确实知道使用这样的异常来控制程序流是一种糟糕的技术,在这种情况下是不必要的:
Private Sub OK_Button_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles OK_Button.Click
If SymbolComboBox.SelectedValue Is Not Nothing Then
ErrorProvider1.SetError(SymbolComboBox, String.Empty)
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
Else
ErrorProvider1.SetError(SymbolComboBox, "Error")
End If
End Sub
答案 2 :(得分:0)
为什么不考虑使用必填字段验证器来执行此操作?你在做Web表单还是Win Forms开发?当你遇到这个问题时,SymbolComboBox.SelectedValue的值是多少?