Как вы предотвращаете ввод пользователя в ComboBox, чтобы пользователь мог выбрать только один из элементов в определенном списке?
VB.NET: как предотвратить ввод пользователя в ComboBox
Ответ 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