jprbest
jprbest

Reputation: 737

Ok button in VB.net

I have a form that contain a combobox, I'm inserting an error check to check if the user hit the ok button before selecting a valid value from the combobox it mask the error and keep the form on focus, till the user select a proper value, but in my case after raise the error the application still close after i press Ok, would you help me identify my mistake here is my code

    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

Thank you in advance

Jp

Upvotes: 0

Views: 5389

Answers (3)

stuartd
stuartd

Reputation: 73303

I'm not sure, but I do know that using exceptions like this to control program flow is a bad technique, and in this case unnecessary:

   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

Upvotes: 2

David Brunelle
David Brunelle

Reputation: 6450

Is your OK button the default accept button for the form ? If so, I beleive it will always return System.Windows.Forms.DialogResult.OK no matter the outcome, unless you specifically cancel the action. I do not remember how to cancel the action though, but if it's the case, I sugesst you remove that AcceptButton property of your form.

OR,

Is it possible that SymbolComboBox.SelectedValue is never 'Nothing' even when nothing is selected (like an empty string) ? I would use selectedIndex instead and check if it's equal to -1.

Hope that helps.

Upvotes: 3

bechbd
bechbd

Reputation: 6341

Why not look at using a required field validator to do this? Are you doing Web forms or Win Forms development? Also what is the value of SymbolComboBox.SelectedValue when you get this issue?

Upvotes: 0

Related Questions