2011-07-18 13 views
0

私はバーコードリーダーからテキストボックスにデータを読み取るフォームを持っています。 とプログラムにフォーカスがないときにバーコードを読み取る?

W12346S1 is first step of a work 
W12346S2 is second step of a work 
W12346S3 is third step of a work 
... 
U123 is a user he read his code to make process 
M456 is a machine user do the work on this machine. 

はので、私はモミのchar(W、U、M)form_KeyDown中()イベントまたは異なる1からの真のテキストボックスにデータを書き込みたい、このようないくつかのcoddedバーコードがあります。

( 真のテキストボックスとは、Wキーで始まるバーコードを読むと、プログラムが "work tekxtbox"にバーコードデータを書き込ませるか、Uプログラムで始まるabarcodeを読むとユーザーのテキストボックスなどにバーコードデータを書き込む...

私はこのコードで独自のテキストボックスを選択できるようにします。方法は何ですか?

注:私がtextbox1.Text + = e.KeyData.ToString()を使用する場合;
出力は次のようになります。ShiftKey、ShiftW、ShiftD1D2D3D4D6ShiftKey、シフト、ShiftD2 W12346S2 をW12346S2

+0

を。 「真のテキストボックス」とはどういう意味ですか? – Icemanind

+0

バーコードリーダーからの出力を横取りして実行中のアプリケーションに送信するサービスを実行する必要があると思います。サービスを作成しましたか? –

+0

@icemanind本当のテキストボックスは、ユーザーがWキーで始まるバーコードを読み取った場合、プログラムが "work tekxtbox"にバーコードデータを書き込ませるか、またはUプログラムで始まるabarcodeを読むとユーザーのテキストボックスなどにバーコードデータを書き込みます。 – Rapunzo

答えて

1

は、あなただけのテキストを読み込むと、このような何か持っていません:あなたが求めているものは不明である

string FirstChar = BarcodeString.Substring(0,1); 
if (FirstChar.Equals("W")) 
    WorkTextBox.Text = BarcodeString; 
if (FirstChar.Equals("U")) 
    UserTextBox.Text = BarcodeString; 
+0

ありがとうございますが、私はすでにこれが2番目の段階であるとしています 出力を変更しました barkod + = e.KeyData.ToString()を置き換えてください( "Key"、 "").Replace( "Shift"、 "") .Replace( "D"、 "").Replace( "、"、 ""); – Rapunzo

0

のためにあなたのバーコードリーダーからの入力が入力されたキーストロークと区別することはできますか?そうであれば、入ってくるバーコードはキーストロークハンドラで処理されるのではなく、バーコード全体をスキャンして適切なボックスに貼り付けるまで待つ特別なハンドラを使用することをお勧めします。

リーダーからの入力がキーストロークのように見える場合は、ややこしいことが起こりやすくなります。あなたのフォームに行くすべてのキーストロークを傍受し、各キーストロークを見て、それがバーコードの一部であるかどうかを判断し、そうであればそれをバッファリングすることができます。次の文字またはタイマーの期限が切れたために、バッファリングされたデータがバーコードの一部ではないと判断した場合は、キーストロークを再発行するために独自のキーストロークイベントを発生させてください。すべてのキーストロークが正しい順序で処理されるようにするには、やや難しいかもしれませんが、うまくいけばそれほど悪くはありません。バーコードリーダーのキーストロークが適切なユーザーエクスペリエンスを提供するよりも不適切なフィールドに入るのを防ぐのはおそらく簡単です。

関連する問題