バーコード デバイスは、キーボードのように動作します。テキストボックスにフォーカスがあると、キーボードから入力したかのように文字がテキストボックスに送信されます。
テキスト ボックスを使用したくない場合は、バーコード ストリームをキャプチャするために、キーボード イベント ハンドラーをサブスクライブする必要があります。
Form1.InitializeComponent():
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
ハンドラー & サポート アイテム:
DateTime _lastKeystroke = new DateTime(0);
List<char> _barcode = new List<char>(10);
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
// check timing (keystrokes within 100 ms)
TimeSpan elapsed = (DateTime.Now - _lastKeystroke);
if (elapsed.TotalMilliseconds > 100)
_barcode.Clear();
// record keystroke & timestamp
_barcode.Add(e.KeyChar);
_lastKeystroke = DateTime.Now;
// process barcode
if (e.KeyChar == 13 && _barcode.Count > 0) {
string msg = new String(_barcode.ToArray());
MessageBox.Show(msg);
_barcode.Clear();
}
}
「キーストローク」を追跡し、バーコード ストリームと共に送信される「キャリッジ リターン」に注意する必要があります。これは、配列で簡単に実行できます。ユーザーのキーストロークとバーコードのキーストロークを区別するために、キーストロークのタイミングを追跡することができます。
たとえば、キーストロークの間隔が 100 ミリ秒未満で、キャリッジ リターンで終了する一連のキーストロークを取得した場合、それはバーコードであると想定して、それに応じて処理できます。
または、バーコード スキャナーがプログラム可能な場合は、特殊文字またはシーケンスを送信することもできます。