¿Cómo se evita la entrada del usuario en un ComboBox para que el usuario pueda seleccionar solo uno de los elementos en la lista definida?VB.NET: cómo evitar la entrada del usuario en un ComboBox
Respuesta
Establezca DropDownStyle
propiedad del cuadro combinado en DropDownList
. Esto permitirá que solo se seleccionen elementos en la lista y no permitirá ninguna entrada de usuario de forma libre.
Establezca el atributo ReadOnly en verdadero.
O si desea que aparezca el cuadro combinado y muestre la lista de valores "disponibles", podría manejar el evento ValueChanged y forzarlo de nuevo a su valor inmutable.
Ver a un usuario golpear a un control que anula sus decisiones es una visión triste. Establezca la propiedad Enabled del control en False. Si no te gusta, cambia su propiedad de Elementos para que solo se pueda seleccionar un elemento.
Make Combobox Readonly. En este caso, el usuario no puede ingresar su texto o no puede cambiar los datos.
PASOS:
- seleccione su cuadro combinado.
- Vaya a su cuadro de propiedades y seleccione Estilodesplazamiento y cambie su valor a Lista desplegable.
esta es la manera más sencilla, pero a mí me funciona con un nombre ComboBox1
solución en 3 pasos básicos:
paso 1.
Declarar una variable al principio de su formulario que contendrá el valor de texto original de ComboBox. Ejemplo:
Dim xCurrentTextValue as string
paso 2.
crear la clave del evento ComboBox1 abajo y asignar a la variable xCurrentTextValue el texto actual del cuadro combinado si se pulsa cualquier tecla que no sea diferrent "ENTER" el valor de texto de cuadro combinado mantiene el valor texto original
Ejemplo:
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
paso 3.
Validar la cuando el texto combinado se cambia, si len (xcurrenttextvalue)> 0 o es diferente a nada, entonces la ComboBox1 toma el valor de la variable 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
========== ============================================= eso es es,
Originalmente solo probé el paso número 2, pero tengo problemas cuando presiona la tecla DEL y la flecha ABAJO, también por alguna razón no validó el evento de tecla salvo que muestre cualquier cuadro de mensaje
! Lo sentimos, esta es una corrección en el paso número 2, se me olvidó cambiar la variable xCmbItem a xCurrentTextValue, xCmbItem que se utilizó para mi uso personal
ESTE ES EL CORRECTO CÓDIGO
xCurrentTextValue = ComboBox1.Text
If e.KeyCode <> Keys.Enter Then
Me.ComboBox1.Text = xCurrentTextValue
End If
Use KeyPressEventArgs,
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
e.Handled = True
End Sub
Private Sub ComboBox4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox4.KeyPress
e.keyChar = string.empty
End Sub
---- en forma de Declaración nivel de veriable CBX ---
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
que corregir las Gracias Formato-
---- en la Declaración nivel de forma de CBX veriable --- tenue como CBX cadena
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
Tiene la intención de editar la respuesta, no publicar una nueva respuesta. Mire el enlace [edit] (http://stackoverflow.com/posts/43222191/edit) debajo de su respuesta. Debe eliminar esta respuesta y editar la anterior. – Bugs
Creo que este es el código correcto y más simple para este tipo de problema
Private Sub CourseName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CourseName.KeyPress
e.Handled = True
End Sub
Por favor explique su código –
- 1. ¿Cómo obtener el combobox para no aceptar la entrada del usuario en Excel-Vba?
- 2. Cómo configuro un valor predeterminado de ComboBox de VB.Net
- 3. En un script bash, ¿cómo saneo la entrada del usuario?
- 4. ¿Validar la entrada del usuario?
- 5. cómo corregir la entrada del usuario
- 6. Obtener entrada del usuario
- 7. Sanitizar la entrada del usuario en laravel
- 8. ¿Cuál es la mejor forma de evitar la entrada del usuario para expresiones regulares en MySQL?
- 9. esperando la entrada del usuario en un hilo separado
- 10. ¿Cómo obtener la entrada del usuario en Clojure?
- 11. restringir la entrada del usuario usando javascript
- 12. Comprobando la sintaxis del enlace de la entrada del usuario
- 13. ¿Dónde `getchar()` almacena la entrada del usuario?
- 14. ¿Puedo cambiar la entrada del teclado de un usuario?
- 15. ¿Cómo restringir la entrada del usuario de 24 horas de formato al campo de entrada?
- 16. Esperando la entrada del usuario con un tiempo de espera
- 17. almacenando la entrada del usuario en la matriz
- 18. Cómo agregar un foco a un ComboBox editable en WPF
- 19. ComboBox de VB.NET - Comportamiento de autocompletado para los valores numéricos
- 20. ¿Cómo puedo validar la entrada HTML para evitar XSS?
- 21. Evitar llamadas a funciones heredadas en VB.NET
- 22. ¿Puedo solicitar la entrada del usuario después de leer la entrada canalizada en STDIN en Perl?
- 23. Colocando el cursor (cursor parpadeante) en la entrada TextField para la entrada del usuario en AS3.
- 24. Cómo detectar el carácter de entrada del usuario en UITextView
- 25. manejar la entrada del usuario en el fondo
- 26. cómo obtener entrada del usuario en el tiempo de ejecución
- 27. Leer la entrada estándar para la entrada del usuario cuando ya hay un archivo redirigido a la entrada estándar
- 28. Detectando entrada nula/vacía del usuario
- 29. ¿cómo valido la entrada del usuario como un doble en C++?
- 30. Cómo construir dinámicamente y devolver un predicado linq basado en la entrada del usuario
e.keychar = string.empty – user6051640
Por favor, [editar] con más información. Las respuestas de solo código y "prueba esto" están [desaconsejadas] (// meta.stackexchange.com/questions/196187), ya que no contienen contenido que se pueda buscar y no explican por qué alguien debe "probar esto". Hacemos un esfuerzo aquí para ser un recurso para el conocimiento. – Mogsdad