Intercettare i tasti..

martedì 29 giugno 2004 - 09.48

hydra Profilo | Junior Member

Ciao ragazzi. Allora... In una finestra della mia applicazione devo processare determinati eventi tramite la pressione dei tasti su tastiera. Se processo tali eventi nella proprietà keydown della finestra, mi succede che quando premo un pulsante a video o cmq sposto il focus, non riesco a tornare al processo dei tasti se il focus non mi torna sul form. Ora, come posso fare perchè io possa controllare la pressione dei tasti sempre? Se alla fine del codice di ogni button, radiobutton ecc. metto un bel me.focus, non riesco comunque a ottenere il focus sul form. Qualcuno sa darmi una dritta di come fare? Grazie a tutti... :)

trinity Profilo | Guru

hydra,
mi potresti postare il codice che utilizzi per intercettare i pusalnti? vorrei vedere che codice utilizzi, perchè io problemi a passare da un oggetto all'altro con il focus non ho problemi, comunque potresti utilizzare il metodo select in quanto in vb net avvolte il focus non è abbastanza potente.

prova a fare così: Me.Select()

ciao
Fabio

alextyx Profilo | Expert

Ahimè....non ho capito!!!
In una finestra, cioè in una certa Form, della quale avrai sicuramente impostato la proprietà KeyPreview a true, tu intercetti dei tasti e fin qui va tutto bene. Nn ho capito poi che succede....i tasti ti mandano su altre form? Altrimenti nn capisco il problema di rimettere il focus su quella originaria, ma se sei su una form diversa, Me.focus nn restituirà il focus a quella di partenza, ma lo confermerà a quella in cui ti trovi. Mi sono annodato?
Io intercetto i tasti su quasi tutte le form della mia applicazione e talvolta mi aprono altre form, ma probabilmente tu usi un sistema diverso dal mio. Potresti essere più chiaro o postare del codice?
Nn so se riuscirò ad aiutarti ma almeno vorrei capire cosa sta succedendo ! :-)

hydra Profilo | Junior Member

Diciamo così, io sono su una form e i tasti mi servono per effettuare delle operazioni all'interno della form. Il tasto può essere ad esempio uno shortcut a un pulsante ma può anche andare a controllare delle periferiche esterne. Il mio problema è questo, se io metto il controllo dei tasti nell'evento keydown della finestra, quando premo un pulsante sulla finestra il focus mi passa sul pulsante, quindi io non riesco a controllare la pressione dei pulsanti. Per ovviare questo problema pensavo di mettere alla fine del codice di ogni pulsante o textbox o controllo in generale l'istruzione per tornare il focus alla form. Il problema è che non riesco a far tornare il focus dove mi interessa. Spero di essere stato chiaro e spero soprattutto che qualcuno mi possa aiutare. :)

trinity Profilo | Guru

Usa il metodo select no focus ossia oggetto.select()

Ciao

alextyx Profilo | Expert

Tu scrivi:

se io metto il controllo dei tasti nell'evento keydown della finestra, quando premo un pulsante sulla finestra il focus mi passa sul pulsante, quindi io non riesco a controllare la pressione dei pulsanti. Per ovviare questo problema pensavo di mettere alla fine del codice di ogni pulsante o textbox o controllo in generale l'istruzione per tornare il focus alla form.

Continuo a nn capire. Io uso ad esempio il Ctrl+PgDwn per andare sull'ultimo record, senza dover cliccare sul pulsante appropriato. Tuttavia, talvolta uso il mouse per spostarmi e subito dopo uso la tastiera. In questo caso il focus era rimasto sull'ultimo pulsante. Altre volte edito una textbox e mentre il Caret (il cursore) è lì che blinka, quindi col focus sulla textbox, da tastiera do il comando di spostamento e il programma, dopo le validazioni opportune, lo esegue, senza problemi. Ma nn è che ti sei dimenticato di mettere la proprietà KeyPreview della Form = True?

alextyx Profilo | Expert

E.....una volta che la form ha esaminato l'immissione, se nn vuoi che finisca ANCHE all'oggetto che ha il focus, devi mettere e.handled=true nella routine keydown della Form.

hydra Profilo | Junior Member

Hai ragione, la proprietà KeyPreview = True me la sono dimenticata, anzi, non sapevo fosse da impostare. Adesso faccio le prove con i consigli che mi avete dato e poi vi faccio sapere. :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5