38086


タイトルの件、C#でWindows Forms画面の開発で  
画面にフォーカスが当たっている状態でハンディーターミナルなどでバーコード入力を受け付けると  
所定のテキストボックスに自動で入力値を入力するような機能を検討しております。

ポイントはテキストボックスにフォーカスが当たっている状態でバーコード入力を  
するのではなく、画面にフォーカスがあたっている（画面をアクティブにしているだけ）で  
バーコード入力を受け付けることができるかということです。  
（テキストボックスにフォーカスがあたっていれば本機能は実現できております。）

この機能を実装する場合、Windows Formsのどのイベントを利用すれば  
実現できるかアドバイス頂けますと助かります。

ご教示よろしくお願いいたします。


CC BY-SA 3.0
2017-09-21T04:15:53.660
38084
2017-09-21T05:18:16.873
9228
question
c# winforms
Windows Forms画面でバーコード入力を受け付けて、テキストボックスに入力値を自動入力したい


バーコードリーダーはキーボードとして接続されているように思われますので、`Form`の`KeyPreview`プロパティに`true`を設定して`KeyDown`や`KeyPress`イベントを発生させれば入力を検知することができるかと思います。

質問の場合は入力用の`TextBox`が存在するようですので、最初の一文字でフォーカスを移動してやればよいです。受け付ける文字種は想定されるバーコードに合わせて変更してください。

[code]

    public Form1()
    {
        InitializeComponent();
    
        // この2行はデザイナーで設定する
        this.KeyPreview = true;
        this.KeyPress += Form1_KeyPress;
    }
    
    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        // イベントが未処理でTextBoxにフォーカスがなく、入力文字がa-zの場合
        if (!e.Handled && !textBox1.Focused && 'a' <= e.KeyChar && e.KeyChar <= 'z')
        {
            textBox1.Focus();
            textBox1.AppendText(e.KeyChar.ToString());
    
            e.Handled = true;
        }
    }
    
[/code]


CC BY-SA 3.0
2017-09-21T05:18:16.873
38086
2017-09-21T05:18:16.873
5750
38084
answer