Não é possível converter Zero em int32 da caixa de texto
-
23-09-2019 - |
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?
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));