我有一个模拟键盘的条形码扫描仪。一旦我扫描了条形码,位于前台的窗口(我的应用程序的窗口)就会注册多个KeyDown事件。
如果我扫描条形码并且记事本处于活动状态,则会得到以下条形码:
7777777;123456;XX/XXXX;1.0
如果我的窗口在前台,则相同的条形码返回以下文本:
7777777¼123456¼XX7XXXX¼1¾0
所有特殊字符均已替换为其他字符。我该怎么办?如何转换字符串,以便像记事本一样处理它?</ p>
protected string CapturedKeys = "";
protected string acceptChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/.;" + (char)Keys.OemPeriod + (char)Keys.OemSemicolon + (char)Keys.Oemcomma;
private bool isValidChar(char c)
{
return acceptChars.Contains(c.ToString());
}
private void frmBarcodeScan_KeyDown(object sender, KeyEventArgs e)
{
if (isValidChar((char)e.KeyCode))
{
CapturedKeys = CapturedKeys + (char)e.KeyCode;
Trace.WriteLine("OK: " + ((char)e.KeyCode));
}
else
{
Trace.WriteLine("ERR: " + ((char)e.KeyCode));
}
if (e.KeyCode == Keys.Return)
{
MessageBox.Show("Scanned: " + CapturedKeys);
}
}