在VB.net中的确定按钮

时间:2011-02-16 15:32:02

标签: vb.net winforms

我有一个包含组合框的表单,我正在插入错误检查以检查用户是否在从组合框中选择有效值之前点击确定按钮它会掩盖错误并使表单保持焦点,直到用户选择一个合适的值,但在我的情况下提出错误后应用程序仍然关闭,我按下确定后,你会帮我识别我的错误 这是我的代码

    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

提前谢谢

太平绅士

3 个答案:

答案 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的值是多少?