Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB.NET] Pressione prolungata tasto

    Ciao a tutti!!!
    Vorrei sfruttare le freccie direzionali per far muovere uno shape. Però ho un problema: quando premo per un periodo prolungato una freccia, lo spostamento avviene solo quando rilascio il tasto (utilizzo l'evento KeyUp). Si può fare avvenire lo spostamento anche quando il tasto è premuto?
    Grazie dell'attenzione!!!

  2. #2
    Magari utilizzando l'evento KeyDown?
    Mi arrestarono un giorno per le donne ed il vino
    Non avevano leggi per punire un blasfemo
    Non mi uccise la morte ma due guardie bigotte
    Mi cercarono l'anima a forza di botte
    Fabrizio De André - Un Blasfemo

  3. #3
    potresti spiegarmi l'evento KeyDown anche con qualche esempio dato che ci ho provato ad utilizzarlo ma con scarsi risultati??

  4. #4
    Non conosco Visual Basic, te lo potrei scrivere in C#. Comuqneu non è difficile, da qualche parte nella definizione del tuo frame, ci sarà

    this.KeyUp += //ecc. ecc. non so come hai chiamato i metodi.


    Batsa modificare KeyUp in KeyDown. Se hai problemi posta il codice, che così non so nemmeno se riesco a risolvere il tuo problema
    Mi arrestarono un giorno per le donne ed il vino
    Non avevano leggi per punire un blasfemo
    Non mi uccise la morte ma due guardie bigotte
    Mi cercarono l'anima a forza di botte
    Fabrizio De André - Un Blasfemo

  5. #5
    io avevo pensato a una cosa del genere:
    Codice PHP:
        Private Sub Form1_KeyDown(sender As ObjectAs System.Windows.Forms.KeyEventArgsHandles Me.KeyDown
            
    If e.KeyCode Keys.Left Then
                Timer1
    .Enabled True
            End 
    If
        
    End Sub
        
    Private Sub Form1_KeyUp(sender As ObjectAs System.Windows.Forms.KeyEventArgsHandles Me.KeyUp
            
    If e.KeyCode Keys.Left Then
                Timer1
    .Enabled False
            End 
    If
        
    End Sub
        
    Private Sub Timer1_Tick(sender As System.ObjectAs System.EventArgsHandles Timer1.Tick
            RectangleShape1
    .Left -= 1
        End Sub 
    quando il tasto viene premuto si attiva il timer ke fa spostare lo shape e quando il tasto viene rilasciato il timer si disattiva e lo shape si ferma. ma purtroppo non funziona...

  6. #6
    Nel tuo Form1 ci sarà una parte dove vengono gestiti gli eventi KeyDown e KeyUp. Hai controllato che effettivamente vengono gestiti questi eventi? Se non c'è questa parte importante, i metodi da te postati non verranno mai chiamati.
    Mi arrestarono un giorno per le donne ed il vino
    Non avevano leggi per punire un blasfemo
    Non mi uccise la morte ma due guardie bigotte
    Mi cercarono l'anima a forza di botte
    Fabrizio De André - Un Blasfemo

  7. #7
    scusami ma non ho capito cosa vuoi dire...

  8. #8
    Sei con Visual Studio? Se si, allora vai sul form e selezionalo e nelle proprietà, da qualche parte, potrai vedere gli eventi collegati al form (non ricordo bene, da molto non programmo in Visual Studio). Assicurati che l'evento KeyDown sia collegato a Form1_KeyDown e l'evento KeyUp sia collegato a Form1_KeyUp
    Mi arrestarono un giorno per le donne ed il vino
    Non avevano leggi per punire un blasfemo
    Non mi uccise la morte ma due guardie bigotte
    Mi cercarono l'anima a forza di botte
    Fabrizio De André - Un Blasfemo

  9. #9
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da calogeromancuso
    scusami ma non ho capito cosa vuoi dire...
    credo si sia confuso sulla diversità di gestione degli eventi su vb.net confronto a c#.

    comunque se fai una cosa del genere :

    codice:
    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            Select Case e.KeyCode
                Case Keys.Down
                    Me.RectangleShape1.Top += 1
                Case Keys.Up
                    Me.RectangleShape1.Top -= 1
                Case Keys.Right
                        Me.RectangleShape1.Left += 1
                Case Keys.Left
                        Me.RectangleShape1.Left -= 1
            End Select
        End Sub
    e aggiungi KeyPreview = True nel tuo costruttore (o tra le proprietà del tuo controllo in vs), non dovresti avere problemi (anche se poi avrai un pò di sfarfallio...).

    @ardito86
    in vb.net basta aggiungere dopo gli argomenti del metodo "Handles [controllo].evento", oppure, se lo vuoi fare in maniera dinamica (da qualche parte del codice, di solito nel costruttore) : "AddHandler [controllo].evento, AddressOf [metodo]"

    esempio in questo caso:
    codice:
    AddHandler Me.KeyDown, AddressOf Form1_KeyDown
    ma essendo già inserito qui :

    codice:
    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown 
    non è necessario aggiungerlo dinamicamente.

  10. #10
    Originariamente inviato da U235
    credo si sia confuso sulla diversità di gestione degli eventi su vb.net confronto a c#.
    esatto, credo che sia proprio questo il punto
    Mi arrestarono un giorno per le donne ed il vino
    Non avevano leggi per punire un blasfemo
    Non mi uccise la morte ma due guardie bigotte
    Mi cercarono l'anima a forza di botte
    Fabrizio De André - Un Blasfemo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.