c#在Gui中创建计算器时出错

时间:2015-12-23 10:44:51

标签: c# visual-studio

我是初学C#开发人员,我无法弄清楚我得到的一些错误。让我解释一下我创建计算器的步骤。

首先我创建了2个变量

string operand = string.Empty;
string input = string.Empty;
// input will be a number in string such as "1" or "2"
// operand will be an operand such as "-" or "+"

// I've created a button
 private void btn1_Click(object sender, EventArgs e)
    {
     // this is button number 1 so:
     input += "1"
     // and there is my textbox which shows what I entered.
     textbox1.Text += input;
     // it adds what is in input to the string in textbox1.
    }

我为所有按钮分配了这样的每个值。到目前为止,一切都很好。

下一步是计算textbox1.Text

中公式的结果

我已将textChanged值分配给textBox1.Text(假设最后它将是输入中的内容)

 private void textBox1_TextChanged(object sender, EventArgs e)
    {
     // I added it's value to
     TextBox1.Text += input;
    }

之后,当我在(3 + 2)中输入textBox1.Text时,该值将等于输入。

之后执行计算部分

 private void Calculate_Click(object sender, EventArgs e)
    {
        int a = Convert.ToInt32(textBox1.Text);
        string a1 = Convert.ToString(a);
        MessageBox.Show(a1);
        // so it converts the string "3 + 2" to int a = 3 + 2 and shows
    }

当我运行脚本时,它会被锁定并且什么都不做。

2 个答案:

答案 0 :(得分:4)

我不明白这段代码的重点:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    // i assigned it's value to
    TextBox1.Text += input;
}

如果更改文本框的文本,将一次又一次地调用方法textBox1_TextChanged。我认为不需要这样做。

然后在你的Calculate_Click方法中,你正在做可怕的错误。我认为你误解了Convert.ToInt32的使用。你认为如果你这样写:

int i = Convert.ToInt32 ("3 + 2");

i将等于5,对吧? 不! Convert课程的方法无法识别数学表达式。它们只识别5,999,123和1234567等数字。

那么如果它无法识别你的表情会怎么样?将抛出FormatException。而且我认为这就是为什么你说有一个"错误"。

如何解决这个问题?那么,你需要找到一个数学表达解析器"当然!您可以在Google上轻松找到其中一个。然后你只需在项目中引用库并使用它的一种方法和BAM!它有效!

答案 1 :(得分:1)

你无法转换" 3 + 2"串起来。它不能简单地在Convert.Int32上转换为5。它会引发异常