使用单个文本框进行添加
本文关键字:添加 文本 单个 | 更新日期: 2023-09-27 18:01:57
我正在编写一个c# windows窗体应用程序,用于在单个文本框中添加两个条目。
我有一个文本框,1个添加按钮和1个结果按钮。
我需要实现以下算法,
-
用户在文本框中输入no。它将存储在
int n1
中。 -
用户将按添加按钮。此时,
textbox.text
的内容将被清除,用户必须能够在其中输入第二个值。 -
第二个值将被存储在
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的新手!请帮助!
提前感谢您的关注!
将n2 = Convert.Int32(textbox1.Text);
移动到结果按钮的点击事件
添加按钮点击事件:
n1=convert.Int32(textbox1.text);
textbox1.text="";
结果按钮的点击事件:
n2=convert.Int32(textbox1.text);
result=n1+n2;
textbox1.text=result.tostring();
试试这样:
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();
}
查看下面的代码
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);
}
}
您的代码包含两个错误:
-
您正在使用
Int32 Convert.ToInt32(String)
,这是不好的,因为如果用户输入不能转换为Int32
的东西,将抛出异常,您应该使用Boolean Int32.TryParse(String, out Int32)
代替,并检查转换是否成功。 -
你在设置
textbox1.Text = "";
之后调用n2 = Convert.ToInt32(textbox1.Text);
,这也是不好的,因为它不会等待用户输入,它会立即尝试将空字符串转换为整数,这将产生异常。 -
你不知道用户什么时候完成了他的数字插入,所以你必须依靠
TextBox
外部的东西来让你知道你应该执行加法。
尝试以下操作:
- 放置
TextBox
. - 放置
Button
. - 初始化"grandTotal"整型变量为零
- 当用户按下按钮时,解析
TextBox
的内容在一个临时的"submittedValue"整型变量中,然后将这个临时变量与你的"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!");
}
我不知道你为什么这样做。
你仍然可以这样做声明n1, n2为int?
在表单级别
然后在你的Add click事件中按这种方式执行
if (! n1.HasValue)
{
n1 = int.Parse(textBox1.Text);
}
n2 = int.Parse(textBox1.Text);
textBox1.Text = "";
如果你要为大量的数字做这个,那么使用List<int?> myIntList = new List<int?>()
,你的add事件将是
myIntList.Add(int.Parse(textBox1.Text));
textBox1.Text = "";
,结果是int? result = myIntList.Sum();