VB.NET: как предотвратить ввод пользователя в ComboBox - программирование
Подтвердить что ты не робот

VB.NET: как предотвратить ввод пользователя в ComboBox

Как вы предотвращаете ввод пользователя в ComboBox, чтобы пользователь мог выбрать только один из элементов в определенном списке?

4b9b3361

Ответ 1

Задайте свойство DropDownStyle этого поля для сопоставления DropDownList. Это позволит выбирать только элементы в списке и не допускать ввода пользователем свободной формы.

Ответ 2

Увидев, как пользователь ударяет по элементу управления, который переопределяет ее решения, это печальное зрелище. Установите для свойства Enabled значение False. Если вам это не нравится, измените его свойство Items, чтобы можно было выбрать только один элемент.

Ответ 3

Используйте KeyPressEventArgs,

Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub

Ответ 4

Сделайте Combobox Readonly. В этом случае Пользователь не может вводить свой текст или не изменять данные.

ШАГОВ:

  • Выберите свое поле со списком.
  • Перейдите в свой список свойств и выберите DropdownStyle и измените его значение на DropdownList.

Ответ 5

Установите для атрибута ReadOnly значение true.

Если вы хотите, чтобы выпадающее имя отображалось и отображалось список доступных значений, вы можете обработать событие ValueChanged и вернуть его обратно к неизменяемому значению.

Ответ 6

это самый простой способ, но он работает для меня с именем ComboBox1

РЕШЕНИЕ на 3 основных элементах:

шаг 1.

Объявите переменную в начале формы, которая будет содержать исходное текстовое значение ComboBox. Пример:

     Dim xCurrentTextValue as string

Шаг 2.

Создать событие combobox1 key down и присвойте переменной xCurrentTextValue текущий текст combobox если нажата клавиша, отличная от "ENTER", то текстовое значение combobox сохраняет исходное текстовое значение

Пример:

Private Sub ComboBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyDown

    xCurrentTextValue = ComboBox1.Text

    If e.KeyCode <> Keys.Enter Then
        Me.ComboBox1.Text = xCmbItem
    End If

End Sub

Шаг 3.

Подтвердить, когда изменяется комбинированный текст если len (xcurrenttextvalue) > 0 или отличается от ничего, тогда combobox1 принимает значение переменной xcurrenttextvalue

Private Sub ComboBox1_TextChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
    If Len(xCurrentTextValue) > 0 Then
        Me.ComboBox1.Text = xCurrentTextValue

    End If
End Sub

=============================================== =========== что он,

Первоначально я только пробовал шаг номер 2, но у меня проблемы, когда вы нажимаете клавишу DEL и стрелку вниз, также по какой-то причине он не подтвердил событие keydown, если я не покажу любое окно сообщения


! Извините, это исправление на шаге номер 2, я забыл изменить переменную xCmbItem на xCurrentTextValue, xCmbItem, который использовался для моего личного использования

ЭТО ПРАВИЛЬНЫЙ КОД

xCurrentTextValue = ComboBox1.Text

If e.KeyCode <> Keys.Enter Then
    Me.ComboBox1.Text = xCurrentTextValue
End If

Ответ 7

---- на уровне формы Объявление cbx veriable ---

Dim cbx as string

Private Sub comboBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Enter
    cbx = Me.comboBox1.Text
End Sub

Private Sub comboBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Leave
    Me.comboBox1.Text = cbx
End Sub

Ответ 8

Я исправляю формат - Спасибо

---- на уровне формы Объявление cbx veriable ---   dim cbx как строка

Private Sub comboBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Enter 
    cbx = Me.comboBox1.Text End Sub

Private Sub comboBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Leave 
    Me.comboBox1.Text = cbx End Sub

Ответ 9

Private Sub ComboBox4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox4.KeyPress
    e.keyChar = string.empty
End Sub

Ответ 10

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

Private Sub CourseName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CourseName.KeyPress
    e.Handled = True

End Sub