[AYUDA VB.NET] TextBox.KeyUp

Iniciado por M1LL3R, 18 Febrero 2015, 06:50 AM

0 Miembros y 2 Visitantes están viendo este tema.

M1LL3R

¿Hola a todos como andan?
No se si la estructura está bien pero intente de muchas formas y la unica que me dejaba depurarlo era con: If e.KeyCode = ComboBox1.Text Then pero luego me tiraba error.
La forma correcta para una DETERMINADA TECLA ES: If e.KeyCode = Keys.B Then.
Lo que quería hacer sería esto: If e.KeyCode = Keys.(ComboBox1.Text) Then cosa que la tecla que elija del ComboBox "complete" el codigo.


ACA LES DEJO UNA IMAGEN DEL CODIGO COMPLETO Y LOS PROBLEMAS:
http://postimg.org/image/4d9en2yst

okik

#1
Código (vbnet) [Seleccionar]
   If e.KeyCode = Asc("L") Then
           MsgBox("Ha presionado ""L""")
       End If


En tu caso:

Código (vbnet) [Seleccionar]
   If e.KeyCode = Asc(ComboBox1.Text) Then
     Dim n$ = Chr(e.KeyCode)
           MsgBox("Ha presionado "  & n$)
       End If

M1LL3R

GRACIAS OKIK!!!
La verdad que me fue muy útil  ;D. Ahora tengo otro problema el cual es que al añadir F's o numeros del NumPad o teclas como Space o RControl no se sale el MsgBox.
Al ComboBox los añadi asi:
ComboBox1.Items.Add(Keys.F1)
ComboBox1.Items.Add(Keys.NumPad0)
ComboBox1.Items.Add(Keys.Space)


Gracias Nuevamente :D !!!!


okik

#3
Cita de: M1LL3R en 18 Febrero 2015, 22:43 PM
GRACIAS OKIK!!!
La verdad que me fue muy útil  ;D. Ahora tengo otro problema el cual es que al añadir F's o numeros del NumPad o teclas como Space o RControl no se sale el MsgBox.
Al ComboBox los añadi asi:
ComboBox1.Items.Add(Keys.F1)
ComboBox1.Items.Add(Keys.NumPad0)
ComboBox1.Items.Add(Keys.Space)


Gracias Nuevamente :D !!!!



Código (vbnet) [Seleccionar]
    Dim N As String
       N = ""
       If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.NumPad0 Or e.KeyCode = Keys.Space Then
           Select e.KeyCode
               Case 112 : N = "F1"
               Case 96 : N = "NupPad0"
               Case 32 : N = "Espacio"
           End Select

           MsgBox("Ha presionado " & N)
       End If



http://127.0.0.1:47873/help/1-5212/ms.help?product=VS&productVersion=100&method=f1&query=System.Windows.Forms.KeyEventArgs.Modifiers&locale=es-ES&category=DevLang%3aVB%00TargetFrameworkMoniker%3a.NETFramework,Version%3Dv4.0


Código (vbnet) [Seleccionar]

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add(Keys.F1)
        ComboBox1.Items.Add(Keys.NumPad0)
        ComboBox1.Items.Add(Keys.Space)
        ComboBox1.Items.Add(Keys.ControlKey)
    End Sub

    Private Sub ComboBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyUp
        Dim N As String
        N = ""
        If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.NumPad0 Or e.KeyCode = Keys.Space Or e.KeyCode = Keys.ControlKey Then
            Select Case e.KeyCode
                Case 112 : N = "F1"
                Case 96 : N = "NumPad0"
                Case 32 : N = "Space"
                Case 17 : N = "ControlKey"
            End Select
            MsgBox("Ha presionado " & N)
        End If

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Select Case ComboBox1.Text
            Case "F1"
                MsgBox("Keycode: " & Keys.F1)
            Case "NumPad0"
                MsgBox("Keycode: " & Keys.NumPad0)
            Case ("Space")
                MsgBox("Keycode: " & Keys.Space)
            Case "ControlKey"
                MsgBox("Keycode: " & Keys.ControlKey)
        End Select
    End Sub

End Class

M1LL3R

Nuevamente muchas gracias por tus respuestas y tu atención!!

El código está bien y funciona pero no es lo que buscaba :(.

El error que tenia arriba es que cuando elijo del ComboBox la "B" y en el TextBox1 presiono la B sale el MsgBox pero ahora si selecciono algún F o Space o NumPad0 no salia el MsgBox.

Con esta parte de tu código lo solucioné:
Dim N As String
        N = ""
        If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.NumPad0 Or e.KeyCode = Keys.Space Then
            Select e.KeyCode
                Case 112 : N = "F1"
                Case 96 : N = "NupPad0"
                Case 32 : N = "Espacio"
            End Select

            MsgBox("Ha presionado " & N)
        End If


Pero el problema ahora es que sin seleccionar nada o seleccionando cualquier tecla del ComboBox, al apretar F1, NumPad0 o Space me sale el MsgBox y solo tendría que aparecer el MsgBox si la tecla seleccionada del ComboBox es apretada en el TextBox.
Es medio confuso pero intente ser lo mas claro posible. Si no entendés decime que trato de ser mas claro.

He intentado con este código pero no logre hacerlo funcionar:
Private Sub Textbox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        Dim N As String
        N = ""
        If ComboBox1.Text = e.KeyCode = Keys.F1 Or ComboBox1.Text = e.KeyCode = Keys.NumPad0 Or ComboBox1.Text = e.KeyCode = Keys.Space Then
            Select Case e.KeyCode
                Case 112 : N = "F1"
                Case 96 : N = "NupPad0"
                Case 32 : N = "Espacio"
            End Select

            MsgBox("Ha presionado " & N)
        End If
    End Sub

okik

#5
 ;DSinceramente, no tengo claro lo que quieres hacer. ¿Para qué pones en un combobox F1, NumPad0, etc?

¿Qué quieres, que cuando el usuario le de al F1, y esté usando el combo se selecciona F1 en la lista?¿o que?, No entiendo.  :-[

Lógicamente, si quieres que dentro de un Textbox se produzca un evento tendrás que poner lo mismo que en los ejemplos pero en el Evento del Textbox no en el del ComboBox, no se si me explico. Yo he puesto esos ejemplos, que son eso, ejemplos para ver como va, pero la programación es flexible y cada cual luego lo moldea y lo aplica como crea conveniente.

Para este código necesitas un Texbox y un ComboBox. Si en el ComboBox seleccionas "F1" cuando teclees 'F1' en el textBox aparecerá un mensaje. Como ves, he usado los mismos parámetros pero usado de forma distinta. Una vez tienes la base, luego lo aplicas como te de la gana. No se si es lo que buscas, espero que te sirva.  ::)

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       ComboBox1.Items.Add(Keys.F1)
       ComboBox1.Items.Add(Keys.NumPad0)
       ComboBox1.Items.Add(Keys.Space)
       ComboBox1.Items.Add(Keys.ControlKey)
       ComboBox1.SelectedIndex = 0
       TextBox1.Focus()
   End Sub

   Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
       Dim N As String
       N = ""
       Select Case e.KeyCode
           Case 112 : N = "F1"
           Case 96 : N = "NumPad0"
           Case 32 : N = "Space"
           Case 17 : N = "ControlKey"
       End Select
       If ComboBox1.Text = N Then
           MsgBox("Ha presionado " & N)
       End If
   End Sub
End Class

M1LL3R

Finalmente me entendiste jajaja :D!

El codigo funciona correctamente  ;-) ;-) ;-) !!!

Muchas Gracias okik!!