2012-06-15 4 views
3

Я решил добавить некоторую валидацию в свой combobox, чего я пытаюсь добиться, чтобы убедиться, что пользователь может ТОЛЬКО вводить поля, которые находятся в поле со списком, но проблема, которую я имею сейчас заключается в том, что если пользователь нажимает на combobox и ничего не вводит и пытается покинуть поле со списком, появится окно с сообщением.У меня проблемы с проверкой моего combobox

Private Sub Combobox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Combobox1.Validating 
    If Combobox1.Items.Contains(Combobox1.Text) = False Then 
     e.Cancel = True 
    End If 
End Sub 

Private Sub Combobox1_Leave(sender As Object, e As System.EventArgs) Handles Combobox1.Leave 
    If Combobox1.Items.Contains(Combobox1.Text) = False Then 
     Combobox1.Select() 
     MessageBox.Show("select item from combobox") 
    End If 
End Sub 

Как было сказано выше кодирование делает работу, но я пытался убедиться, что окно сообщения не отображается, если пользователь оленьей кожи ничего вводить в ComboBox.

+0

Обычно установка DropDownStyle к DropDownList бы предотвратить эта проблема. – LarsTech

+0

привет, да, я понимаю это, но это не совсем то, что я был после – JackSparrow

+0

Как вы сами сказали, код работает. Не уверен, какую помощь вы ищете в данный момент. – LarsTech

ответ

4

Основываясь на ваш комментарий, я думаю, что все, что вам нужно сделать, это добавить проверку на пустую строку:

Private Sub ComboBox1_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles ComboBox1.Validating 
    If ComboBox1.Items.Contains(ComboBox1.Text) = False Then  
    e.Cancel = (ComboBox1.Text <> String.Empty) 
    End If 
End Sub 

Private Sub ComboBox1_Leave(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.Leave 
    If Not ComboBox1.Items.Contains(ComboBox1.Text) Then 
    If ComboBox1.Text <> String.Empty Then 
     ComboBox1.Select() 
     MessageBox.Show("select item from combobox") 
    End If 
    End If 
End Sub 
+0

Большое спасибо, это было идеально. – JackSparrow

1

Используйте этот код:

Private Sub Combobox1_Leave(sender As Object, e As System.EventArgs) Handles Combobox1.Leave 

    If ComboBox2.SelectedIndex = -1 Then 
     MessageBox.Show("select item from combobox") 
    End If 
End Sub