我正在尝试比较两个文本框以查看它们是否为空但我收到异常错误:
输入字符串的格式不正确
代码:
private void btncalc_Click(object sender, EventArgs e)
{
try
{
int ina= int.Parse(txttea.Text);
int inb= int.Parse(txtcoffee.Text);
int inc = 0, ind = 0;
if (this.txttea.Text == "" && this.txtcoffee.Text == "") // this not working
{
MessageBox.Show("select a item");
txttea.Focus();
}
if (cbxwithoutsugar.Checked)
{
inc = (ina * 20);
}
else
{
inc = (ina * 8);
}
if (cbxcoldcoffee.Checked)
{
ind = (inb * 10);
}
else
{
ind = (inb * 5);
}
txtamount.Text = (Convert.ToInt32(inc) + Convert.ToInt32(ind)).ToString();
}
catch (Exception a)
{
MessageBox.Show(a.Message);
}
}
答案 0 :(得分:2)
您应首先检查文本框是否为空,然后 尝试获取值。
另外,请使用 String.IsNullOrEmpty :
if (String.IsNullOrEmpty(txttea.Text) || String.IsNullOrEmpty(txtcoffee.Text))
{
MessageBox.Show("select a item");
txttea.Focus();
}
int ina= int.Parse(txttea.Text); // See comment below about TryParse
int inb= int.Parse(txtcoffee.Text);
int inc = 0, ind = 0;
此外,使用 TryParse 而不是Parse(并且修剪以避免使用WhiteSpace总是一个好主意):
int ina;
if (!Int32.TryParse(txttea.Text.Trim(), out ina))
{
MessageBox.Show("Value is not a number");
}
答案 1 :(得分:2)
尝试使用TryParse方法,因为如果你的代码出现空白,那么 使用TryParse你不需要try-catch,只需将两个整数与零比较,例如:
int ina =0 , inb =0;
int.TryParse(txttea.Text, out ina);
int.TryParse(txtcoffee.Text, out inb);
if (ina == 0 && this.inb == 0) // this not working
{
}
答案 2 :(得分:1)
我建议您在预期数字时使用NumericUpDown而不是TextBox。通过这种方式,您可以使用“价值”来获取咖啡和茶的数量。
private void btncalc_Click(object sender, EventArgs e)
{
try
{
int ina= numtea.Value;
int inb= numcoffee.Value;
int inc = 0, ind = 0;
if (ina == 0 && inb == 0) // this not working
{
MessageBox.Show("select a item");
numtea.Focus();
}
if (cbxwithoutsugar.Checked)
{
inc = (ina * 20);
}
else
{
inc = (ina * 8);
}
if (cbxcoldcoffee.Checked)
{
ind = (inb * 10);
}
else
{
ind = (inb * 5);
}
txtamount.Text = (inc + ind).ToString();
}
}
这是一个很好的用户友好解决方案。
答案 3 :(得分:0)
我觉得你表示“不工作”的行不是问题,但整数解析是。异常不是可以从逻辑测试中抛出的异常,但它是可以从格式错误的整数解析中抛出的异常。尝试注释掉解析行,看看错误是否仍然存在。
答案 4 :(得分:0)
首先,您要解析文本框的文本。然后你再次检查他们的文本值是否为null。这不是多余的吗?
如果文本区域中的文本不是数字,则应该有解析异常。它将显示在Messagebox中。我想你可以试着把一些日志语句引用解析整数的值。