Barcode scanners I have used in the past put a carriage return + newline (i.e. "\r\n") at the end of the text so I use the KeyDown event and check for the Enter key to wait for the full barcode to be submitted:
private void tbEnterSerialNum_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string serialnumber = this.tbEnterSerialNum.Text;
}
}