1

磁気カードリーダーの入力をキャッチする方法が見つからないようです。スワイプすると、入力はメモ帳などのアクティブなテキストエディタに入ります。

残念ながら、テキストボックスではなくラベルにする必要があるため、テキストボックスフィールドにフォーカスしてもうまくいきません。したがって、代わりにUSBデバイスから変数またはラベルへの入力をキャッチする方法が必要です。

私がこれやより良いアイデアを行うために使用できる.NETクラスを知っている人はいますか?

4

2 に答える 2

4

WinFormsアプリの場合は、

    private void Form1_Load(object sender, EventArgs e)
    {
        KeyPreview = true;
        KeyPress += Form1_KeyPress;
    }

    private bool inputToLabel = true;
    void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (inputToLabel)
        {
            label1.Text = label1.Text + e.KeyChar;
            e.Handled = true;
        }
        else
        {
            e.Handled = false;
        }
    }

ウィンドウにフォーカスがある限り、キーを押す文字はラベルのテキストに移動します。

于 2011-03-24T01:14:51.677 に答える
1

とにかく、ユーザーが手動で入力するのを防ぐことはできないと思います。あなたが持っているカードリーダーがキーボードをエミュレートしているのではないかと思います。したがって、リーダーから読み取るには、キーボード入力を受け取る必要があります。キーボード入力とは、ユーザーが好きなものを入力できることを意味します。

考えられる解決策は、カードリーダーをAPIを使用してカードから読み取るものに変更することです。

より良いカードリーダーを入手することができない場合、これを行うための最良の方法はボタンを用意することだと思います。ボタンがクリックされたら、提供されたコード@BalaRを含む新しいフォームを開きます。ただし、さらに、最初のキー入力から1秒以内にフォームを閉じます。これにより、ユーザーが手動で入力を改ざんすることはできなくなりますが、リーダーが完了するのに十分な時間が与えられます。

于 2011-03-24T01:29:35.653 に答える