Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Da tastiera...
Forum - C# / VB.NET - Da tastiera...

Avatar
Due (Normal User)
Pro


Messaggi: 68
Iscritto: 19/10/2007

Segnala al moderatore
Postato alle 18:18
Giovedì, 08/05/2008
Dunque, nel mio programma quando viene pigiato un certo tasto della tastiera si attiva un altro evento (ad esempio cambiano le impostazioni del form o appare un msgbox, ecc)...come posso fare?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:43
Venerdì, 09/05/2008
Ma che domanda e' ????

PM Quote
Avatar
Due (Normal User)
Pro


Messaggi: 68
Iscritto: 19/10/2007

Segnala al moderatore
Postato alle 15:12
Venerdì, 09/05/2008
Scusa forse mi sono spiegato male :asd:
Allora, mettiamo che ho un form con un pulsante che chiamo Button1.
Il problema è che io voglio che quando viene pigiato un certo tasto, ad esempio l'invio o lo spazio, il pulsante cambi di posizione...come faccio a dirgli "quando viene pigiato invio"? Lo so non sono chiarissimo ma non so come dirlo meglio :asd: (ah ho vb.net 2005)

Ultima modifica effettuata da Due il 09/05/2008 alle 15:12
PM Quote
Avatar
Nitro (Member)
Pro


Messaggi: 72
Iscritto: 17/10/2007

Segnala al moderatore
Postato alle 17:16
Venerdì, 09/05/2008
Per fare quello che dici tu devi utilizzare le API di Windows e precisamente con questa dichiarazione:
Codice sorgente - presumibilmente VB.NET

  1. Declare Auto Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Int32) As Int16


Dopo devi creare un timer con un intervallo impostato su 200 circa e nell'evento "Tick" del timer creato immetti questo codice:
Codice sorgente - presumibilmente Delphi

  1. If GetAsyncKeyState(Keys.D) <> 0 Then
  2.   Msgbox("È stato premuto il tasto D")
  3. end if


Questo codice ti avvisa con un messaggio che hai premuto il tasto D, ma al posto di D nel parametro di GetAsyncKeyState puoi inserire (Keys.<tasto da premere>;) e al posto del messaggio metti quello che deve fare quando si preme quel pulsante.
Naturalmente puoi scrivere + di un IF per vedere i tasti premuti.:k:
Ciao

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:47
Venerdì, 09/05/2008
Nella condizione è meglio mettere un = -32767: anche se il <> 0 non è sbagliato (c'è scritto anche sul mio sito) e funziona sempre con le lettere, potresti avere problemi con altri tasti (vedi modificatori come shift).
Bisogna ricordare che questo codice (da inserire in un timer), funziona anche quando il programma NON ha il focus e ad esempio è minimizzato nella barra delle applicazioni. Se vuoi evitare questo, devi usare l'evento KeyDown (o KeyUp o KeyPress), il quale, comunque, dà spesso dei problemi...

PM Quote