Не удается преобразовать Zero в Int32 из Textbox

StackOverflow https://stackoverflow.com/questions/2343750

  •  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));

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top