Probably, it's that your ID value is fixed:
using (SqlCommand querySaveStaff = new SqlCommand("DELETE FROM bar_code1 WHERE id=@id", openCon))
{
querySaveStaff.Parameters.AddWithValue("@id", 0);
Once you delete that row, you can't delete it again.
And as for your commented out code:
querySaveStaff.Parameters.Add("@id",SqlDbType.Int).Value=idTextBox.Text;
That's not necessarily going to work either.
Instead, use int.TryParse at the top of your method to check and validate the user input, then use the converted value as the parameter.
int id;
if (!int.TryParse(idTextBox.Text, out id))
{
... report problem to user ...
return;
}
...
querySaveStaff.Parameters.AddWithValue("@id", id);
But please, sort out your variable names! "querySaveStaff" deleting data? Not an obvious bit of self documentation!