none
Far "reagire" Visual Basic alla pressione di un QUALUNQUE tasto? RRS feed

  • Domanda

  • Salve, vorrei fare in modo che sul mio programma, alla pressione di un QUALUNQUE tasto, comparisse la msgbox "Hai premuto un tasto." Come faccio? Mi potreste aiutare? Non ho proprio idea di come si faccia questa cosa. Grazie.
    domenica 13 novembre 2016 14:01

Risposte

Tutte le risposte

  • Ciao Migales,

    inserisci il codice che vuoi fr eseguire alla pressione di un tasto qualunque nel

    Evento Control.KeyDown

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    domenica 13 novembre 2016 14:51
    Moderatore
  • Ho provato il codice che mi propone la pagina che mi avete indicato e funziona parzialmente; infatti visual basic reagisce alla pressione di tutti i tasti eccetto TAB, i numeri da 0 a 9, stamp e rsist. Qualsiasi altro tasto lo rileva. Mi è bastato scrivere il codice:

    Public Class form1
    
    
        Private nonNumberEntered As Boolean = False
    
    
        ' Handle the KeyDown event to determine the type of character entered into the control.
        Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
             Handles textBox1.KeyDown
            ' Initialize the flag to false.
            nonNumberEntered = False
    
            ' Determine whether the keystroke is a number from the top of the keyboard.
            If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then
                MsgBox("Hai premuto un tasto!")
                If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
    
    
                    If e.KeyCode <> Keys.Back Then
    
    
                        nonNumberEntered = True
                    End If
                End If
            End If
            'If shift key was pressed, it's not a number.
            If Control.ModifierKeys = Keys.Shift Then
    
                nonNumberEntered = True
                
    
            End If
        End Sub 'textBox1_KeyDown
    
    
        ' This event occurs after the KeyDown event and can be used 
        ' to prevent characters from entering the control.
        Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
            Handles TextBox1.KeyPress
            ' Check for the flag being set in the KeyDown event.
            If nonNumberEntered = True Then
                ' Stop the character from being entered into the control since it is non-numerical.
                e.Handled = True
            End If
        End Sub 'textBox1_KeyPress
    
        Private Sub form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    End Class

    Perché non mi rileva tutti i tasti?

    *edit: mi rileva anche i tasti speciali come il tasto che aumenta il volume (ho un portatile), ma di quella parte di tasti non me li rileva tutti (per esempio, i tasti per aumentare e abbassare la luminosità non me li rileva, ma non sono gli unici.)
    • Modificato Migales lunedì 14 novembre 2016 14:26
    lunedì 14 novembre 2016 14:23
  • Ciao Migales,

    per quanto riguarda i numeri da 0 a 9 prova a leggere cosa hai scritto nel tuo codice ...

      If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then
                MsgBox("Hai premuto un tasto!")
      End If

    cosa fa, descritto a parole, questo codice ?

    poi

      If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then
                MsgBox("Hai premuto un tasto!")
        If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
    
                End If
            End If

    Che senso ha la stessa condizione annidiata ?

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    lunedì 14 novembre 2016 15:19
    Moderatore
  • Ciao Migales

    per 'catturarare' il tasto Speciale TAB devi utilizzare questo codice

        Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
            If e.KeyCode = Keys.Tab Then
    
            End If
        End Sub

    I pulsanti invece luminosità, volume, ecc. sono gestiti via software non sempre puoi intercettarli dipende se generano l'evento di KeyDown o meno

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    lunedì 14 novembre 2016 15:27
    Moderatore
  • Ciao Migales

    per 'catturarare' il tasto Speciale TAB devi utilizzare questo codice

        Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
            If e.KeyCode = Keys.Tab Then
    
            End If
        End Sub

    I pulsanti invece luminosità, volume, ecc. sono gestiti via software non sempre puoi intercettarli dipende se generano l'evento di KeyDown o meno

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    E per quanto riguarda stamp e rsist?
    martedì 22 novembre 2016 19:20
  • Ciao Migales

    per 'catturarare' il tasto Speciale TAB devi utilizzare questo codice

        Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
            If e.KeyCode = Keys.Tab Then
    
            End If
        End Sub

    I pulsanti invece luminosità, volume, ecc. sono gestiti via software non sempre puoi intercettarli dipende se generano l'evento di KeyDown o meno

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    Attendo risposta... la mia sollecitazione è dovuta al fatto che probabilmente, essendo una discussione vecchia, l'avrete persa, non altro...
    giovedì 24 novembre 2016 20:22