none
關於ErrorProvider的用法.. RRS feed

  • 問題

  • 請問各位學長:

    我要驗證ComboBox的值是否為空值,所以我這樣寫...

    Private Sub ComboBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles ComboBox.Validating
            If IsNothing(me.comboBox.Text) Then
                ErrorProvider.SetError(me.comboBox.Text, "沒有資料")
            End If
    End Sub

    如上所示,當我按下Button來存檔時,沒有辦法驗證出Combobox是否為空值,因為會直接將空值存入資料庫,請學長指教。

    2007年5月31日 上午 07:46

解答

  • 回學長:

    還是一樣,先存檔後驗證,所以我改成將驗證直接放在Button1_Click裡面..

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ErrorProvider.Clear()
            If String.IsNullOrEmpty(Me.ComboBox1.Text) Then
                ErrorProvider.SetError(Me.ComboBox1, "沒有資料")
                MsgBox("沒有資料", MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "提醒您")
                Exit Sub
           End If

    ........

    這樣的寫法,就可以在存檔前驗證是否為空值了。

    2007年5月31日 上午 09:16

所有回覆

  • IsNothing 是用來比對物件資料是不是 Nothing,應該無法判斷文字是否為空白。

    你可以改用 String.IsNullOrEmpty(me.comboBox.Text) 來試看看。

    2007年5月31日 上午 07:59
    版主
  • 回學長:

    依您的方式改了程式碼,但...還是無法驗證欄位是否為空值。

    我發現...都是存檔之後,才出現那個驚歎號的圖示;所以應該是先存檔後驗證,請問學長,我該如何將它反向?

    2007年5月31日 上午 08:14
  • Hi,

    在存檔按鈕按下之後應該要再去驗證資料的正確性,例如

    Code Snippet

        Dim ErrFlag As Boolean = False

        Private Sub ComboBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles ComboBox1.Validating
            If String.IsNullOrEmpty(ComboBox1.Text) Then
                ErrorProvider1.SetError(ComboBox1, "沒有資料")
                ErrFlag = True
            Else
                ErrFlag = False
            End If
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If ErrFlag Then Exit Sub
            MessageBox.Show("Button Clicked")
            ErrorProvider1.Clear()
        End Sub

     

    2007年5月31日 上午 08:42
    版主
  • 回學長:

    還是一樣,先存檔後驗證,所以我改成將驗證直接放在Button1_Click裡面..

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ErrorProvider.Clear()
            If String.IsNullOrEmpty(Me.ComboBox1.Text) Then
                ErrorProvider.SetError(Me.ComboBox1, "沒有資料")
                MsgBox("沒有資料", MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "提醒您")
                Exit Sub
           End If

    ........

    這樣的寫法,就可以在存檔前驗證是否為空值了。

    2007年5月31日 上午 09:16