我一直得到“输入字符串格式不正确”。添加值文本框时出错

时间:2015-03-29 14:39:01

标签: c# asp.net textbox

我经历了几个相同错误的帖子,我无法弄清楚为什么它不适合我。

我正在尝试在文本框中添加多个值。我从2个文本框开始测试,但我的计划是总共10个。但我一直收到这个错误。我在每个文本框上都有这个事件。想法?如果需要,我可以包含我的asp代码。

protected void calculateLabs(object sender, EventArgs e)
    {
        string lab01 = TextBox1.Text;
        string lab02 = TextBox2.Text;

        int num1 = int.Parse(lab01);
        int num2 = int.Parse(lab02);

        int final = num1 + num2;

        Label1.Text = final.ToString();
    }

UPDATE,它有效,但异常仍然在标签上显示消息,一旦我输入下一个值,错误消失。

protected void calculateLabs(object sender, EventArgs e)
{
    try
    {
        int num1 = Convert.ToInt32(TextBox1.Text);
        int num2 = Convert.ToInt32(TextBox2.Text);

        int final = num1 + num2;

        Label1.Text = final.ToString();
    }
    catch(Exception ex)
    {
        Label1.Text = ex.Message;
    }
}

3 个答案:

答案 0 :(得分:0)

  • 确保两个文本框中输入的字符串都是数字。 请参阅此问题: How do I make a textbox that only accepts numbers?
  • 尝试使用Convert.ToInt32(字符串s)代替Int.Parse(字符串s)
  • 添加一个try-catch块并告诉我们抛出异常的确切位置。
  

<强>更新

在转换Textbox1&amp;的值之前Textbox2确保它们具有值而不是euqual null

    protected void calculateLabs(object sender, EventArgs e)
    {
        try
        {
            if (!string.IsNullOrEmpty(TextBox1.Text) && !string.IsNullOrEmpty(TextBox2.Text))
            {
                int num1 = Convert.ToInt32(TextBox1.Text);
                int num2 = Convert.ToInt32(TextBox2.Text);
                int final = num1 + num2;
                Label1.Text = final.ToString();
            }
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
        }
    }

答案 1 :(得分:0)

为什么使用final这个词作为变量名?它是c#的保留字,其他语言尝试使用其他变量名,如total,finalNum等。

答案 2 :(得分:0)

不确定原因,我一直收到错误。所以我只包括每个文本框的默认值为0的地方。

 <asp:TextBox ID="part1" runat="server" AutoPostBack="true" OnTextChanged="calculateSum" Text="0">

不再出错了。