Pergunta

Eu tenho o seguinte código para fazer uma validação muito simples para uma caixa de texto

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

Isso funciona bem quando Text != 0 , mas quando Text == 0 recebo uma FormatException dizendo que a string não tem o formato adequado.Como posso corrigir isso?

Foi útil?

Solução

Seu problema está aqui:

if (txtInStock.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

Você está verificando o comprimento de uma caixa de texto e configurando o texto de outro. Mude para isso:

if (txtOnOrder.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

Além disso, existe uma razão pela qual você está usando Convert.ToString(0) em vez de apenas "0"? Eu não recomendo particularmente usar essa abordagem para validação de dados, mas isso deve corrigir o problema.

Outras dicas

Como você não pode ter certeza de que o usuário da sua caixa de texto escreverá um número inteiro correto, eu recomendaria usar Int32.TryParse () em vez de converter.toint32. Assim, você poderá lidar facilmente com os casos de erro.

Esse código faria?

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

Espero que isso ajude, cumprimentos, Tom.

Esta é uma maneira simples de lidar com uma caixa de texto vazia

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

Eu também salvaria os valores da caixa de texto em variáveis ​​temporárias e depois faria as comparações, a menos que você quisesse forçar um 0 na caixa de texto quando ela estivesse vazia.

int instockamt = convert.toint32 (string.isnullorEmpty (txtInstock.text)? 0: int.parse (txtInstock.text));

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top