我有以下代码对文本框进行一些非常简单的验证
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);
当Text!= 0时,这可以正常工作,但是当Text == 0时,我得到一个FormatException,表示该字符串的格式不正确。我怎么能纠正这个?
答案 0 :(得分:4)
你的问题在这里:
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
您正在检查一个文本框的长度并设置另一个文本框的文本。将其更改为:
if (txtOnOrder.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
另外,您是否有理由使用Convert.ToString(0)
而非"0"
?我不特别建议使用这种方法进行数据验证,但这应该可以解决问题。
答案 1 :(得分:2)
由于您无法确定文本框的用户是否会写出正确的整数,我建议使用Int32.TryParse()而不是Convert.ToInt32。因此,您将能够轻松处理错误案例。
答案 2 :(得分:1)
这段代码会吗?
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);
希望这有帮助, 最好的祝福, 汤姆。
答案 3 :(得分:1)
这是一种处理空文本框的简单方法
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);
我还会将文本框值保存到临时变量,然后进行比较,除非你想在文本框中为空时强制为0。
答案 4 :(得分:0)
int inStockAmt = Convert.ToInt32(string.IsNullOrEmpty(txtInStock.Text)?0:int.Parse(txtInStock.Text));