1

I can't seem to find a way to catch the input of a magnetic card reader. When it swipes, the input gets into active text editor, like say a notepad.

Unfortunately, the focus on textbox field won't do the trick, because I'm required to make it a label instead of a textbox. Thus, I need a way to catch the input from the USB device to a variable or label instead.

Does anyone knows of a .NET class I could use to do this or any better ideas?

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 读取卡片的读卡器。

如果不能选择更好的读卡器,我认为最好的方法是有一个按钮。单击该按钮后,打开一个包含@Bala R 提供的代码的新表单。但除此之外,在第一次输入按键后 1 秒内关闭表单。这将防止用户手动篡改输入,但将为读者提供足够的时间来完成。

于 2011-03-24T01:29:35.653 回答