我正在编写一个c#windowsform应用程序,用于在单个文本框中添加两个条目。
我有1个文本框,1个添加按钮和1个结果按钮。
我需要实现以下算法,
用户在文本框中输入no。它将存储在int n1
中。
用户将按添加按钮。此时,textbox.text
的内容将被清除,用户必须能够输入其中的secound值。
此secound值将存储在int n2
中。
现在,当用户点击结果按钮时,他应该获得int result=n1+n2
我在添加按钮的点击事件
中写了以下内容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很新!请帮忙!
提前感谢您的关注!
答案 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)
您的代码包含几个错误:
您正在使用Int32 Convert.ToInt32(String)
这是不好的,因为如果用户输入无法投放到Int32
的内容会抛出异常,您应该使用Boolean Int32.TryParse(String, out Int32)
相反,检查转换是否成功。
您在设置n2 = Convert.ToInt32(textbox1.Text);
之后正在调用textbox1.Text = "";
,这也很糟糕,因为它不会等待用户输入,它会尝试将空字符串转换为立即整数,这会产生异常。
您无法知道用户何时完成了他的号码插入,因此您必须依赖TextBox
外部的某些内容来告知您应该执行此添加。
尝试以下方法:
TextBox
。Button
。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();