Как вывести сообщение, если пользователь ввел другое значение, которого нет в списке со списком? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть 10,20,30,40,50,60,70,80,90,100 элементов в моем списке со списком.

Если пользователь ввел другое значение (пример 12), которого нет среди них, и нажал кнопку, тогда я хочу показать окно сообщения.

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 26 мая 2020

Первый вариант должен заключаться в том, чтобы заставить пользователя выбрать элемент из раскрывающегося списка, а не вводить его от руки. Вы делаете это, устанавливая для свойства DropDownStyle значение DropDownList вместо DropDown. В этом случае при вводе символа будет выбран следующий элемент, который начинается с этого символа, если он существует, и ничего не будет делать в противном случае. в контроль. Это означает обработку события Validating для проверки содержимого элемента управления и предотвращения потери фокуса в случае сбоя. Вы также можете обработать событие Validated, чтобы что-то сделать после того, как элемент управления прошел проверку. Это может выглядеть так:

Private Sub ComboBox1_Validating(sender As Object, e As CancelEventArgs) Handles ComboBox1.Validating
    If ComboBox1.Text <> String.Empty AndAlso Not ComboBox1.Items.Contains(ComboBox1.Text) Then
        ComboBox1.SelectAll()

        MessageBox.Show("Please select an item in the drop-down list",
                        "Invalid Item",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Exclamation)

        'Don't let the control lose focus.
        e.Cancel = True
    End If
End Sub

Private Sub ComboBox1_Validated(sender As Object, e As EventArgs) Handles ComboBox1.Validated
    ComboBox1.SelectedIndex = ComboBox1.FindStringExact(ComboBox1.Text)
End Sub

В этом случае пользователь не сможет покинуть элемент управления, пока не выберет или не введет допустимое значение, которое вообще не будет содержать текста. Как только они выберут или введут допустимое значение и сместят фокус, будет выбран соответствующий элемент в раскрывающемся списке. Если вы этого не сделаете, пользователь может ввести допустимое значение, но SelectedItem и SelectedIndex все равно будут Nothing и -1 соответственно.

2 голосов
/ 26 мая 2020
Private nums() As String = {"10", "20", "30", "40", "50", "60", "70", "80", "90", "100"}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ComboBox1.Items.AddRange(nums)
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If Not nums.Contains(TextBox1.Text) Then
        MessageBox.Show("Please enter a number that appears in the drop down.")
    Else
        MessageBox.Show("Good Number!")
    End If
End Sub
2 голосов
/ 26 мая 2020
If Not ComboBox1.Items.Contains(userInput) Then
    MessageBox.Show("Number not in list")
End If

Удачи.

...