Continuo a programmare una sorta di navigazione da tastiera nel mio semplice programma grafico (utilizzando C#). E mi sono imbattuto nei guai ancora una volta.Il pannello non si attiva
Il mio problema è che voglio elaborare l'input da tastiera per spostare un livello intorno. Lo spostamento del livello con il mouse funziona già abbastanza bene, tuttavia il controllo non ottiene il focus (né KeyUp/KeyDown/KeyPress né GotFocus/LostFocus vengono attivati per questo controllo). Poiché la mia classe deriva da Panel (e sovrascrive un paio di eventi), ho anche sovrascritto gli eventi menzionati sopra, ma non riesco a far scattare quegli eventi.
Penso che potrei riuscire a implementare la risposta della tastiera usando qualcosa come Keyboard.GetState() o ProcessCmdWnd o qualcosa del genere. Tuttavia: devo ancora essere in grado di dire quando il controllo ha il focus.
C'è un modo più o meno elegante di aggiungere questa capacità a un controllo utente (basato su Panel)?
Ho controllato molti thread qui e potrei usare this approach per l'input da tastiera. Il problema di messa a fuoco tuttavia rimane ancora.
Grazie mille per le informazioni in anticipo!
Igor.
p.s .: Sto programmando in C# .NET v3.5, utilizzando VS2008. È un'applicazione Windows.Forms, non WPF.
Incredibile! Funziona davvero ed è stato così facile da implementare. Non conoscevo la classe ControlStyles e quindi non sapevo che avrei potuto cambiarlo. Grazie mille :). – Igor
@HansPassant In quali casi esattamente si dovrebbe usare 'Focus()' piuttosto che 'Select()'? – Medinoc
Una risposta corretta è lunga, utilizzare il pulsante Chiedi domanda per favore. –