使用单个TextBox添加

时间:2011-07-11 10:51:52

标签: c# winforms

我正在编写一个c#windowsform应用程序,用于在单个文本框中添加两个条目。

我有1个文本框,1个添加按钮和1个结果按钮。

我需要实现以下算法,

  1. 用户在文本框中输入no。它将存储在int n1中。

  2. 用户将按添加按钮。此时,textbox.text的内容将被清除,用户必须能够输入其中的secound值。

  3. 此secound值将存储在int n2中。

  4. 现在,当用户点击结果按钮时,他应该获得int result=n1+n2

  5. 我在添加按钮的点击事件

    中写了以下内容
    n1=convert.Int32(textbox1.text); 
    
    textbox1.text=""; 
    
    
    n2=convert.Int32(textbox1.text);//exception occures here 
    

    结果按钮的点击事件有,

    textbox1.text=result.tostring(); 
    

    我倾向于使用此程序,并发现它是NULL赋值给int n2的原因。

    我有点困惑如何使用单个文本框来实现上述问题?

    有没有办法只通过文本框字段通过用户提供textbox.txt值?

    我需要设置文本框的任何属性吗?

    我对.net很新!请帮忙!

    提前感谢您的关注!

5 个答案:

答案 0 :(得分:3)

n2 = Convert.Int32(textbox1.Text);移至结果按钮的点击事件

添加按钮点击事件:

n1=convert.Int32(textbox1.text);   
textbox1.text=""; 

结果按钮的点击事件:

n2=convert.Int32(textbox1.text);
result=n1+n2;
textbox1.text=result.tostring(); 

答案 1 :(得分:1)

尝试这样的事情:

private int result=0;

addMethod()
{
    //here you can use also int.TryParse
    if(string.isnullorempty(textbox1.text.trim()))
    textbox1.text="0";

    result+=convert.toint32(textbox1.text);

    textbox1.text=string.empty;
}

resultMethod()
{
    textbox1.text=result.tostring();
}

答案 2 :(得分:1)

查看以下代码

      private int i = 0;
    private int[] a = new int[2];
    private void button1_Click(object sender, EventArgs e)
    {
        int b;
        if(Int32.TryParse(textBox1.Text, out b))
        {
            a[i] = b;
            i++;
            textBox1.Text = "";
        }
        else
        {
            MessageBox.Show(@"Incorrect number");
        }


    }

    private void resultbutton2_Click(object sender, EventArgs e)
    {
        int sum = a[0] + a[1];
        MessageBox.Show("Sum: " + sum);
    }
}

答案 3 :(得分:1)

您的代码包含几个错误:

  1. 您正在使用Int32 Convert.ToInt32(String)这是不好的,因为如果用户输入无法投放到Int32的内容会抛出异常,您应该使用Boolean Int32.TryParse(String, out Int32)相反,检查转换是否成功。

  2. 您在设置n2 = Convert.ToInt32(textbox1.Text);之后正在调用textbox1.Text = "";,这也很糟糕,因为它不会等待用户输入,它会尝试将空字符串转换为立即整数,这会产生异常。

  3. 您无法知道用户何时完成了他的号码插入,因此您必须依赖TextBox外部的某些内容来告知您应该执行此添加。

    < / LI>

    尝试以下方法:

    • 放置TextBox
    • 放置Button
    • 将“grandTotal”整数变量初始化为零。
    • 当用户按下按钮时,在临时“submittedValue”整数变量中解析TextBox的内容,然后将此临时变量加到“grandTotal”变量中,并显示生成的“grandTotal”变量值

    通过这种方式,您将能够在之前的总数上连续执行添加操作。

    实施例

    全局变量:

    protected Int32 GrandTotal = 0;
    

    Button点击事件处理程序:

    Int32 currentValue = 0;
    
    if (Int32.TryParse(userValue.Text, out currentValue))
    {
        GrandTotal += currentValue;
    
        MessageBox.Show(String.Format("The new total is: {0}", GrandTotal));
    }
    else
    {
        MessageBox.Show("Invalid value!");
    }
    

答案 4 :(得分:0)

我不知道你为什么这样做。

仍然可以这样做 在表单级别将n1,n2声明为int?

然后在您的添加点击事件中以这种方式执行

if (! n1.HasValue)
{
    n1 = int.Parse(textBox1.Text);                
}
n2 = int.Parse(textBox1.Text);
textBox1.Text = "";

如果您打算使用数字批次执行此操作,请使用List<int?> myIntList = new List<int?>(),您的添加活动将

myIntList.Add(int.Parse(textBox1.Text));
textBox1.Text = "";

,结果为int? result = myIntList.Sum();