Используйте NumericUpDown вместо текстового поля для захвата целых / десятичных значений. Он обрабатывает все проверки для вас, мешая пользователям вводить нечисловые значения. Вы можете установить максимальное и минимальное значения, которые вам требуются, и вам не нужно беспокоиться о том, что значения не вводятся, так как NumericUpDown всегда будет иметь значение по умолчанию.
Если вы используете целые числа, вам просто нужно привести к int при извлечении значения, в противном случае он возвращает десятичное число. Итак, ваш код будет:
Quantity = Convert.ToInt32(numericupdown1.Value);
Discount = numericupdown2.Value;
Если вы склонны к использованию текстовых полей, вам нужно удалить пробел с помощью .Trim()
Quantity = Convert.ToInt32(txt_quantity.Text.Trim());
И использовать int.TryParse
вместо;
int value = 0;
if (int.TryParse(txt_quantity.Text.Trim(), out value)
{
// Successful conversion so value now contains your integer
}
Вы можете сделать то же самое с десятичными знаками.