2016-06-21 12 views
0

私はこのようなバーコードを送信しているスキャナで作業しています: "¬00111111111112222222"は、USBキーボードのような押されたキーとして。私がしなければならないことは、接頭辞 "¬"を取得するたびにTextBoxにフォーカスを設定することです。特殊文字を比較する方法

問題は今、私のKeyDownイベントの中で、KeyEventArgsが私の接頭辞からの文字ではなく "System"であることです。フォーカスを設定するためにこの記号を比較する方法はありますか?

私が試したコードは次のとおりです。

private void KeyDownEvent(object sender, KeyEventArgs e) 
{ 
    if (Convert.ToString(e.Key) == "¬") 
    { 
     myTextBox.Focus(); 
    } 
} 

アップデート: 私は今e.SystemKeyを試してみましたが、この時点で、私はイベントの引数としてLeftAltを取得します。だから多分AISCIIコードはこのSystemKey LeftAltに変換されますか?

更新: バーコードをスキャンしたときに取得したすべてのキーがログに記録されていましたが、私が思ったようにASCIIコード自体が得られないことに気付きました。私が得意とするのは、このシンボルを "Alt + NumPad0 + NumPad7 + NumPad2"のようにするためのキーコンビネーションですので、 "¬" SymbolのASCIIコードと一致させるだけで済みます。すべての助けをありがとう。

+0

「KeyInterop.VirtualKeyFromKey(e.Key);」はどうですか? – Majestic

+0

空ではありません – Teroman

+0

スキャナがKeyDownイベントを正確に返していますか?通常、KeyEventArgsには、押されたキーの詳細が含まれている必要があります。 KeyDownイベントはどのようなトリガーもなしにどのように起動できますか?文字列全体や何かを得る方法はありますか? – ViVi

答えて

0

シリアル入力バッファ(シリアル通信サンプル)を読み、文字列を解析して特殊文字をチェックしてみてください。ここ チェック: http://www.codeproject.com/Articles/678025/Serial-Comms-in-Csharp-for-Beginners

OR あなただけのASCII値を取り、特定の値または範囲と比較することができます。 たとえば、 が65未満または126を超えています。

+0

私はあなたの最初のアドバイスはComportでしか動作しないと思います。しかし、私はUSBしか持っていません。 私は2番目を試しましたが、問題は、KeyEventArgsがLeftAltに全体のcharを変更しているようです。 私が気づいたもう一つの事は、テキストボックスにテキストを書き込むと、実際に押されたキーを一時的に保存する必要があるため、TextBox.Textから正しい文字を取得できることです。たぶん私はこのキャッシュの中にあるものを読むことができました。 – Teroman

+0

私はrs232 rs422とusbで1番目のオプションを試しました。どこでも素晴らしい作品です。しかし、あなたが期待していることは何でも試してみることができます。 –

+0

このソリューションの大きな問題は、私がWPFで作業していて、Windowsフォームで作業していないことです。私は悲しいことに、KeyEventArgsにKeyCharプロパティを持たない。 KeyEventArgsのASCIIコードを示す他のプロパティもありません。 – Teroman