Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
ComboBox e tasti Up e Down
martedì 28 agosto 2007 - 17.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Enzo_LT
Profilo
| Newbie
14
messaggi | Data Invio:
mar 28 ago 2007 - 17:14
Salve, ho fatto un form di inserimento dati e tra le varie TextBox ci sono 4 ComboBox che all'occasione attivo come inserimento dati, e per comodità di inserimeto dati da tastiera gestisco con una routine comune i tasti Invio,Esc,Up e Down questi ultimi per navigare.
Qui nasce il mio problema, quando mi trovo su una ComboBox e premo il tasto Up o Down per cambiare Campo di inserimento funziona ma mi cambia anche la selezione della lista contenuta nel ComboBox.
Vorrei mantenere questo modo di navigare con la tastiera quindi chiedo se è possibile disattivare la selezione del ComboBox con i tasti Up e Down.
Grazie.
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
mar 28 ago 2007 - 21:40
Non credo sia fattibile, l'escamotage potrebbe essere quella che, in uscita dal campo combobox in seguito a pressione di tasto Up o Down, tu sposti la selezione via codice al record precedente/successivo in modo da riposizionarlo nella posizione originale.
Non so se mi sono spiegato, prova e fammi sapere
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
Faelar
Profilo
| Junior Member
71
messaggi | Data Invio:
mer 29 ago 2007 - 15:53
Non sono sicuro di aver capito bene il problema, ma perché non provi ad usare l'evento KeyDown?
In questo modo puoi intercettare la pressione del tasto, fare ciò che ti serve, e poi disabilitarne la gestione di windows.
Ti scrivo un piccolo esempio in VB .NET:
Private Sub ComboBox_KeyDown(ByVal sender As Object, ByVal e As System....) Handles omboBox.KeyDown
If (e.KeyCode = Keys.Down) Then
e.SuppressKeyPress = True 'Disabilita la gestione di Windows
End If
End Sub
Se non è chiaro o non ho capito nulla dimmi pure.
Ciao
Enzo_LT
Profilo
| Newbie
14
messaggi | Data Invio:
mer 29 ago 2007 - 17:25
Grazie, è proprio quello che mi serviva.
Visto che ci siamo non è che Hai un consiglio per emulare le control array (tipo VB6) o almeno come avanzare alla control successiva premendo il tasto Enter.
In parte ho risolto assegnando alla proprietà TAG di ogni control che uso come input da tastera un numero progressivo.
Ti mostro la routine:
Private Sub procedura_evento_Key(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Dati_01.KeyUp, Dati_02.KeyUp, Dati_03.KeyUp, Dati_04.KeyUp, Dati_05.KeyUp, Dati_06.KeyUp, Dati_07.KeyUp, Dati_08.KeyUp, Dati_09.KeyUp, Dati_10.KeyUp, Dati_11.KeyUp, Dati_12.KeyUp, Dati_13.KeyUp, Dati_14.KeyUp, Dati_15.KeyUp, Dati_17.KeyUp, Dati_18.KeyUp, Dati_17.KeyUp, Dati_18.KeyUp, Dati_14.KeyUp
Dim IndexControl As Byte = 0
If e.KeyCode = Keys.Enter And CType(sender, Control).Text <> "" Then IndexControl = Val(CType(sender, Control).Tag) + 1
If e.KeyCode = Keys.Up Then IndexControl = Val(CType(sender, Control).Tag) - 1
If e.KeyCode = Keys.Down Then IndexControl = Val(CType(sender, Control).Tag) + 1
If e.Alt Or e.Shift Then IndexControl = 0
If IndexControl > 0 Then
For Each ctl As Control In Me.Controls
Dim a As Byte = Val(ctl.Tag)
If a = IndexControl Then
ctl.Focus()
End If
Next ctl
End If
End Sub
Cosi com'è funziona però se c'è un modo più semplice è meglio.
Grazie, comunque Ho risolto.
Ciao
Torna su
Stanze Forum
Elenco Threads
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 !