السلام عليكم ،
اخواني هذا الكود يقوم بقراءة الباركود تلقائي دون الحاجة للوقوف focus داخل حقل نصي textbox
اولاً : اجعل خاصية Form.KeyPreview للفورم true
ثانياً :
private string BarCode = "";
DateTime _lastKeystroke = new DateTime(0);
List<char> _barcode = new List<char>(10);
private void evtKeyUpEvent(object sender, KeyEventArgs e)
{
if (Keys.NumPad0 <= e.KeyCode && e.KeyCode <= Keys.NumPad9)
{
BuildBarCode((e.KeyCode - Keys.NumPad0).ToString());
}
else if (Keys.D0 <= e.KeyCode && e.KeyCode <= Keys.D9)
{
BuildBarCode((e.KeyCode - Keys.D0).ToString());
}
if (65 <= e.KeyValue && e.KeyValue <= 90)
{
BuildBarCode((e.KeyCode).ToString());
}
else if (Keys.ShiftKey == e.KeyCode)
{
}
else if (Keys.OemPeriod == e.KeyCode)
{
BuildBarCode(".");
}
else if (Keys.Multiply == e.KeyCode)
{
BuildBarCode("*");
}
else if (Keys.Add == e.KeyCode)
{
BuildBarCode("+");
}
else if (Keys.Separator == e.KeyCode)
{
BuildBarCode("|");
}
else if (Keys.Subtract == e.KeyCode)
{
BuildBarCode("-");
}
else if (Keys.Divide == e.KeyCode)
{
BuildBarCode("/");
}
else if (Keys.Separator == e.KeyCode)
{
BuildBarCode(",");
}
else if (Keys.Separator == e.KeyCode)
{
BuildBarCode(",");
}
else if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
updateUIBarCode(BarCode);
}
}
private void BuildBarCode(string value)
{
BarCode = string.Concat(BarCode, value);
}
public void updateUIBarCode(string i)
{
AddNewRowWithCode(i);
}
ثالثاً في keyup للفورم private void Details_KeyUp(object sender, KeyEventArgs e) { //check timing(keystrokes within 100 ms) TimeSpan elapsed = (DateTime.Now - _lastKeystroke); if (elapsed.TotalMilliseconds > 100) BarCode = "";
evtKeyUpEvent(sender, e);
_lastKeystroke = DateTime.Now;
}