السلام عليكم ،

اخواني هذا الكود يقوم بقراءة الباركود تلقائي دون الحاجة للوقوف 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;
    }