Не удается преобразовать Zero в Int32 из Textbox
-
23-09-2019 - |
Вопрос
У меня есть следующий код, чтобы сделать очень простую проверку для текстового поля.
if(txtInStock.Text.Length == 0)
txtInStock.Text = Convert.ToString(0);
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
Это работает нормально, когда текст! Как я могу это исправить?
Решение
Ваша проблема здесь:
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
Вы проверяете длину одного текстового поля и устанавливаете текст другого. Изменить это на это:
if (txtOnOrder.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
Кроме того, есть ли причина, по которой вы используете Convert.ToString(0)
вместо просто "0"
? Я не особенно рекомендую использовать этот подход для проверки данных, но это должно исправить проблему.
Другие советы
Поскольку вы не можете быть уверены, что пользователь вашего текстового поля напишет правильное целое число, я бы порекомендовал использовать Int32.tryparse () Вместо преобразования.toint32. Таким образом, вы сможете легко обрабатывать случаи ошибок.
Сделает ли этот код?
if(txtInStock.Text.Length == 0) txtInStock.Text = "0"; if (txtInStock.Text.Length == 0) txtOnOrder.Text = "0"; int inStockAmt = Convert.ToInt32(txtInStock.Text); int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
Надеюсь, это поможет, с уважением, Том.
Это простой способ обработки пустого текстового поля
if( string.IsNullOrEmpty( txtInStock.Text ))
txtInStock.Text = "0";
if( string.IsNullOrEmpty( txtOnOrder.Text ))
txtOnOrder.Text = "0";
int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
Я также сохранил бы значения Textbox для временных переменных, а затем проходил сравнение, если, если вы не захотите привести 0 в текстовом поле, когда он пуст.
int anstockamt = convert.toint32 (string.isnullorempty (txtinstock.text)? 0: int.parse (txtinstock.text));