369 messaggi dal 08 dicembre 2006
Buongiorno,

ho una semplice winform in C#,.NET4, dove un utente scansiona un codice a barre in una textBox. Ho associato all'evento Validated della textBox una query che fa una ricerca nel DataBase alle associazioni al codice appena scansionato. Il problema è che non riesco a far "trasmettere" il tasto TAB o RETURN dal lettore BarCode alla textBox. Scansionando un codice a barre qualsiasi, usando il notepad, la scansione di un codice avviene, ed è seguita da un "a capo", invece quando lo scansiono nella textbox, avviene solo la scansione del codice, con il cursore che rimane alla fine della stringa. L'evento Validated si scatena se schiaccio il tasto TAB da tastiera. Avete suggerimenti? Grazie!!
98 messaggi dal 13 febbraio 2016
Buongiorno Inactive,
anzichè utilizzare l'evento Validated prova con l'evento TextChanged.

Tienici aggiornati,
ciao
369 messaggi dal 08 dicembre 2006
Buongiorno pillopo e grazie per la risposta. Si, funziona. L'evento TextChanged mi recupera il codice scansionato dopo che il BarCode trasmette il tasto TAB. Forse ho scartato l'utilizzo di questo evento perchè ogni volta che c'è un carattere nella textBox, viene scatenato l'evento; avendo una sequenza variabile tra i 10 e i 20 caratteri, la query viene richiamata tante volte. Mi ero soffermato nello scatenare l'evento Validated perchè viene richiamato SOLO dopo aver terminato l'acquisizione di tutti i caratteri, seguita appunto da un TAB o un CR. Userò il tuo suggerimento, che funziona, se non ne hai altri da darmi... grazie ancora e buona giornata!!
Modificato da inactive il 14 settembre 2016 11.24 -
98 messaggi dal 13 febbraio 2016
Per evitare richiamare la query molte volte controlla prima quante lettere sono presenti nella textBox (tramite la proprietà TextLength) e magari, a partire da 10 inizi ad effettuare la query.

Al momento altri suggerimenti non me ne vengono.

Ciao
369 messaggi dal 08 dicembre 2006
si mi sto muovendo proprio in questa direzione...grazie ancora!!
369 messaggi dal 08 dicembre 2006
Ho risolto così: nell'evento KeyPress della textBox ho inserito questo codice:
if (e.KeyChar == (char)Keys.Return)
{ 
//codice da eseguire
} 

Il lettore barcode l'ho impostato in modo che alla fine della scansione mi accodasse il tasto RETURN.
Grazie ancora.
11.886 messaggi dal 09 febbraio 2002
Contributi
Non so se ti può essere utile anche questo...
Oltre al suffisso ENTER, su molti barcode reader puoi anche impostare un prefisso, come ad esempio un tasto funzione (es. F16) che andrai a configurare come global hotkey di Windows.
Vuol dire che, ogni volta che quel tasto viene ricevuto da Windows, indipendentemente dal fatto che la finestra della tua applicazione abbia il focus o no, verrà eseguita una tua funzione. Da quella funzione puoi ovviamente massimizzare la finestra e porre il focus sulla casella di testo, in modo che possa ricevere i caratteri che seguiranno immediatamente dopo.

In questi giorni sto facendo un'applicazione che legge il barcode come la tua e ho adottato questa soluzione per semplificare la vita all'utente, che così non deve preoccuparsi che il focus sia nella casella. (Lo scopo è ridurre il numero di volte che l'utente deve posare il barcode per usare il mouse).

Ecco un esempio per configurare il global hotkey.
http://www.codeproject.com/Articles/442285/Global-Shortcuts-in-WinForms-and-WPF

ciao,
Moreno

Enjoy learning and just keep making
369 messaggi dal 08 dicembre 2006
feature molto utile e interessante questa che implementerò...grazie Moreno!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.