大家好,我写了一个计算器,有两处地方不对
1:我点1+2,点一时它会显示1,然后点+2,它就变成了12,我用减,乘,除都没有出现这种情况,只有加号出错
2:点等号没反应
请高手帮忙解答我的代码:
/*
num1,num2,symbol,state定义在Form1.Designer.cs里
private float num1 = 0;
private float num2 = 0;
private char symbol;//符号
private int state = -1;
*/using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace MyCalculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {        }        private void display_TextChanged(object sender, EventArgs e)//显示框
        {        }        private void pressNumber(string s)//点击数时
        {
            if (display.Text.Equals("0"))
            {
                display.Text = "";
            }
            if (state == -1)
            {
                display.AppendText(s);
            }
            else if (state == 1)
            {
                display.Text = "";
                state = 2;
                display.AppendText(s);
            }
            else if (state == 2)
            {
                display.AppendText(s);
            }
        }        private void button1_Click(object sender, EventArgs e)
        {
            pressNumber("1");
        }        private void button2_Click(object sender, EventArgs e)
        {
            pressNumber("2");
        }        private void button3_Click(object sender, EventArgs e)
        {
            pressNumber("3");
        }        private void button4_Click(object sender, EventArgs e)
        {
            pressNumber("4");
        }        private void button5_Click(object sender, EventArgs e)
        {
            pressNumber("5");
        }        private void button6_Click(object sender, EventArgs e)
        {
            pressNumber("6");
        }        private void button7_Click(object sender, EventArgs e)
        {
            pressNumber("7");
        }        private void button8_Click(object sender, EventArgs e)
        {
            pressNumber("8");
        }        private void button9_Click(object sender, EventArgs e)
        {
            pressNumber("9");
        }        private void button0_Click(object sender, EventArgs e)
        {
            pressNumber("0");
        }        private void buttonDot_Click(object sender, EventArgs e)//.
        {
            if (display.Text.Equals("0"))
            {
                display.Text = "";
            }
            if (!display.Text.Contains("."))
            {
                display.AppendText(".");
            }
        }        private void pressSymbol(char c)
        {
            if (display.Text.Equals("0"))
            {
                return;
            }
            symbol = c;
            num1 = Single.Parse(display.Text);
            state = 1;
        }        private void buttonPlus_Click(object sender, EventArgs e)
        {
            pressSymbol('+');
        }        private void buttonJian_Click(object sender, EventArgs e)
        {
            pressSymbol('-');
        }        private void buttonCheng_Click(object sender, EventArgs e)
        {
            pressSymbol('*');
        }        private void buttonChu_Click(object sender, EventArgs e)
        {
            pressSymbol('/');
        }        private void buttonEqual_Click(object sender, EventArgs e)
        {
            string s = display.Text;
            float result = 0;
            if (s.Equals("0") || s.Equals("") || state == -1)
            {
                return;
            }
            num2 = Convert.ToSingle(display.Text);
            switch (symbol)
            {
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1 * num2;
                    break;
                case '/':
                    result = num1 / num2;
                    break;
            }
            display.Text = result.ToString();
            state = 1;
        }        private void buttonC_Click(object sender, EventArgs e)//使数为0
        {
            display.Text = "0";
            state = -1;
        }
    }
}

解决方案 »

  1.   

    因为只有+被系统重载过,转成double就行了。
                double num1 num2;
                double.TryParse(display.Text,out num1) ; 
                double.TryParse(display.Text,out num2) ; 这样result = num1 + num2;
    返回的就对了
      

  2.   

    对的,转换下数据类型,转成DOUBLE试试
      

  3.   

    double num1 num2;应该加在Form1.Designer.cs里吧double.TryParse(display.Text,out num1) ;  
    double.TryParse(display.Text,out num2) ;  
    应该加哪呢?
      

  4.   

    自己动动脑啊,如果确实想不明白请看下一句。
    分别替换到你给num1,num2赋值那两句。
      

  5.   

    怎么能放在desinger.cs里面呢,就放在当前这个.cs文件里面,做类变量.
      

  6.   

    为什么我重新做一便就对了?我对按纽改过名,似乎改过名就出错 我用的是Microsoft Visual Studio 2005