CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Evento Click Sobre Del Combobox
(1/1)
karolarivero:
Antes de todo saludos
Tengo un combobox que es activado por otro control, y este combobox activa otro control; es una cadena, es decir, cuando se llena correctamente un control este activa el combobox y le pasa el foco y el combobox hace lo mismo, pero con otro control, mi duda es la siguiente:
¿Existe alguna manera que al hacer click sobre cuaquiera de los items de un combobox este active otro control y le pase el foco?
hasta ahorita tengo el siguiente evento, que me hace una de las validaciones sobre el combobox:
--- Citar ---
Private Sub ComboBox1_KeyPress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) Handles ComboBox1.KeyPress
' Estos eventos se producen al darle enter al ComboBox
If e.KeyChar = ChrW(Keys.Enter) Then
If Me.ComboBox1.Text.Length = 0 Or ComboBox1.Text = "" Then
If chequear = False Then
MsgBox("La información de este campo es obligatoria", MsgBoxStyle.Exclamation, "Aviso")
GroupBox3.Enabled = False
Else
chequear = False
End If
Me.ComboBox1.Focus()
Else
GroupBox3.Enabled = True
Button1.Enabled = False
CheckBox1.Focus()
End If
End If
End Sub
--- Fin de la cita ---
Este hace las validaciones cuando el usuario presiona enter, el problema se presenta cuando el usuario hace click sobre uno de los items del combobox.
En caso de que haga click sobre una de los items, lo ideal seria usar el evento click pero este desplega la lista que contiene el combobox tan rapido que no da chance a que el usuario escoja un subitems...la idea es que al hacer click en uno de los items se active el siguiente control y se le pase el focus. Alguna suguerencia?
Saludos, gracias por su atencion...
Cajami:
Hola, pero porque no usar el evento SelectedIndexChanged del combobox, cuando el usuario seleccione un item del control se pasa el foco a otro control:
--- Código: Text --- Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Me.Button1.Focus() End Sub
claro lo que implica esto es que el usuario no puede seleccionar algun item del combobox con el teclado ia que llegando al primer ittem se iria el foco al otro control, espero te sirva de algo, nos vemos :hola:
karolarivero:
Use ese evento, pero no me resuelve pues la idea es que al tener el combobox el foco el usuario se pueda mover con las flechas del teclado escojer su opcion darle enter y activar un control segun la seleccion que hizo, esta validacion me la resuelve el evento KeyPress, ahora si el control recibe el foco pero el usuario no va usar el teclado si no el mouse es donde se complica el asunto, use el evento click y el SelectedIndexChanged junto al keypress y pasa lo que me dices al seleccionar un items pasa inmediatamente el foco al control relacionado con el mismo.... :(
Saludos...
cuajoa:
la idea que se me ocurrio a mi es que podes utilizar una nueva variabel booleana, llamarla apretoTecla e inicializarla en true, y luego en el evento clic del combo ponerle que se cambie a false y en el evento SelectedIndexChanged haces algo asi:
--- Código: Text --- Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged If Not apretoTecla Then GroupBox3.Enabled = True Button1.Enabled = False CheckBox1.Focus() apretoTecla = True End If End Sub
Yo lo probe y andubo, pero n ose si te sirve asi com oesta, pero se le puede encontar la vuelta.
Saludos
karolarivero:
Hola, Opte por hacer un evento llamado:
--- Código: Text --- '------------------------------------------------- Evento KeyDown ------------------------- Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown If e.KeyCode = Keys.Down Or e.KeyCode = Keys.Up Or e.KeyCode = Keys.Left Or e.KeyCode = Keys.Right Then flecha = True End If End Sub
Y entonces valide con el evento keypress y SelectedIndexChanged, pero en este ultimo coloque asi:
--- Código: Text --- Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged If Not flecha Then If ComboBox1.Text.Length = 0 Then If chequear = False Then MsgBox("La información de este campo es obligatoria", MsgBoxStyle.Exclamation, "Aviso") GroupBox3.Enabled = False BotonGuardar.Enabled = False GroupBox5.Enabled = False For j = 1 To CantidadTrigo If Not (VectorTrigo(j) = "") Then Button1.Enabled = True j = CantidadTrigo End If Next j '.... end sub
Osea, si estaba trabajando con las flechas de control el evento SelectedIndexChanged no se iba ejecutar...
Gracias por la pista...
Saludos :hola:
Navegación
Ir a la versión completa