好的,我是C#的新手,我想要添加两个用户输入到文本框中的值。这是我的代码,我收到“val1 + val2”的错误。如何添加这些值?我真的很抱歉,如果之前有人询问,但我已经找到了答案,我根本找不到答案。谢谢:)。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Csharp_Calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void buttonAdd_Click(object sender, EventArgs e)
{
int val1 = Convert.ToInt32(textBox1.Text);
int val2 = Convert.ToInt32(textBox2.Text);
textBoxAns.Text = val1 + val2;
}
private void buttonSub_Click(object sender, EventArgs e)
{
int val1 = Convert.ToInt32(textBox1.Text);
int val2 = Convert.ToInt32(textBox2.Text);
textBoxAns.Text = val1 + val2;
}
private void buttonDivide_Click(object sender, EventArgs e)
{
int val1 = Convert.ToInt32(textBox1.Text);
int val2 = Convert.ToInt32(textBox2.Text);
textBoxAns.Text = val1 + val2;
}
private void buttonRefresh_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBoxAns.Text = "";
}
}
}
答案 0 :(得分:6)
尝试这样的事情:
textBoxAns.Text = (val1 + val2).ToString();
答案 1 :(得分:5)
textBoxAns.Text = (val1 + val2).ToString();
通常在C#中,你不能隐式地将数字转换为string
,所以只需将括号括起来然后先进行计算,然后将结果作为字符串。
答案 2 :(得分:3)
val1 + val2
的总和是一个整数。要解决这个问题,您必须将总和转换为文本框可读的内容,所以:
textBoxAns.Text = Convert.ToString(val1 + val2);
有些程序员也喜欢int.ToString。在这种情况下,只需:
textBoxAns.Text = (val1 + val2).ToString();
答案 3 :(得分:2)
正如大家已经说过的那样,你的问题发生了,因为你试图为字符串属性(TextBoxAns.Text
)分配添加两个整数(另一个整数)的结果,而没有正确的C#语言就不允许这样做转换。
但是没有人指出你的注意力在你的代码中的另一个大问题。
如果用户未在文本框中键入数字,会发生什么情况? 如果用户要求除法并在textBox2.Text中键入零,会发生什么?
在这两种情况下,您的代码都会崩溃,因为在第一种情况下,Convert.ToInt32
无法处理数字字符串,在第二种情况下,您会得到除以零的代码。
处理用户输入时需要小心.... 正确的方法是使用Int32.TryParse方法,如以下示例中的分割按钮
private void buttonDivide_Click(object sender, EventArgs e)
{
int val1;
int val2;
if(!Int32.TryParse(textBox1.Text, out val1))
{
MessageBox.Show("Please type a valid number!");
return;
}
if(!Int32.TryParse(textBox2.Text, out val2))
{
MessageBox.Show("Please type a valid number!");
return;
}
if(val2 == 0)
{
MessageBox.Show("Cannot divide by zero!");
return;
}
textBoxAns.Text = (val1 / val2).ToString();
// The line above is an integer division, without decimals returned.
// If you want a floating point result then you need
textBoxAns.Text = (Convert.ToDouble(val1) / val2).ToString();
}