C#写计算器的时候遇到一个问题请高手帮忙解决一下代码写下\
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace Cale
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            foreach (Control con in Controls)
            {
                if (con is Button)
                {
                    con.Click += new EventHandler(Button_CLick);
                }
            }
        }
       
        private double a, b, sum;
        private string p;        private void Button_CLick(object sender, EventArgs e)
        {
            
            switch ((((Button)sender).Text))
            {
                default:
                    {
                        textBox1.Text += textBox1.Text;
                        break;
                    }
                case  "*":
                    {
                        
                        a = int.Parse((((Button)sender).Text));
                        p=(((Button)sender).Text);                        ((Button)sender).Text = "";
                        break;
                    }
                case "+":
                    {                        a = int.Parse((((Button)sender).Text));
                        p = (((Button)sender).Text);                        ((Button)sender).Text = "";
                        break;
                    }
                case "-":
                    {                        a = int.Parse((((Button)sender).Text));
                        p = (((Button)sender).Text);                        ((Button)sender).Text = "";
                        break;
                    }
                case "/":
                    {                        a = int.Parse((((Button)sender).Text));
                        p = (((Button)sender).Text);                        ((Button)sender).Text = "";
                        break;
                    }
                case "=":
                    {
                        if (p == "+")
                        {
                            sum = a + b;
                            textBox1.Text = sum.ToString();
                        }
                        if (p == "-")
                        {
                            sum = a - b;
                            textBox1.Text =sum.ToString();
                        }
                        if (p == "*")
                        {
                            sum = a * b;
                            textBox1.Text = sum.ToString() ;
                        }
                        if (p == "/")
                        {
                            textBox1.Text = (a / b).ToString();
                        }
                        break;
                    {
                        
                    }                    
                    
                    
                    }            }
        }
    }
}

解决方案 »

  1.   

    http://topic.csdn.net/u/20091230/21/6f9a0aa5-571b-40c6-a65e-e9823b394b1b.html
      

  2.   

    看看我自己改过之后的代码,基本上没什么问题了,欢迎有朋友指出错误
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace Cale
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
                foreach (Control con in Controls)
                {
                    if (con is Button)
                    {
                        con.Click += new EventHandler(Button_CLick);
                    }
                }
            }
           
            private double a, b, sum;
            private string p;
            private bool count = false;//输入数据
            private bool pic = true;//是否已输入点
            private bool _num = false;//是否已输入算术符
            private void Button_CLick(object sender, EventArgs e)
            {
                
                switch ((((Button)sender).Text))
                {
                    default:
                        {
                            
                                textBox1.Text += (((Button)sender).Text);
                                count = true;
                                break;
                            
                            
                        }
                    case ".":
                        {
                            if (pic)
                            {
                                textBox1.Text += (((Button)sender).Text);
                                pic = false;
                            }
                            break;
                        }
                    case  "*":
                        {
                            if (count != true)
                            {
                                break;
                            }
                            try
                            {
                                a = Convert.ToDouble(textBox1.Text);
                            }
                            catch
                            {
                                break;
                            }
                            p=(((Button)sender).Text);                        textBox1.Text = "";
                            _num = true;
                            break;
                        }
                    case "+":
                        {
                            if (count!=true)
                            {
                                break;
                            }
                            try
                            {
                                a = Convert.ToDouble(textBox1.Text);
                            }
                            catch
                            {
                                break;
                            }
                            
                            p = (((Button)sender).Text);                        textBox1.Text = "";
                            _num = true;
                            break;
                        }
                    case "-":
                        {
                            if (count != true)
                            {
                                break;
                            }
                            try
                            {
                                a = Convert.ToDouble(textBox1.Text);
                            }
                            catch
                            {
                                break;
                            }
                            p = (((Button)sender).Text);                        textBox1.Text = "";
                            _num = true;
                            break;
                        }
                    case "/":
                        {
                            if (count != true)
                            {
                                break;
                            }
                            
                            try
                            {
                                a = Convert.ToDouble(textBox1.Text);
                            }
                            catch
                            {
                                break;
                            }
                            p = (((Button)sender).Text);
                            if (a.Equals(0.0))
                            {
                                System.Windows.Forms.MessageBox.Show("除数不能为零", "华仔提示", MessageBoxButtons.OKCancel);
                                break;
                            }
                            textBox1.Text = "";
                            _num = true;
                            break;
                        }
                    case "=":
                        {
                            if (count != true || _num!=true)
                            {
                                textBox1.Text = "";
                                break;
                            }                        try
                            {
                                b = Convert.ToDouble(textBox1.Text);
                            }
                            catch
                            {
                                break;
                            }
                           
                            
                            if (p == "+")
                            {
                                sum = a + b;
                                textBox1.Text = sum.ToString();
                            }
                            if (p == "-")
                            {
                                sum = a - b;
                                textBox1.Text =sum.ToString();
                            }
                            if (p == "*")
                            {
                                sum = a * b;
                                textBox1.Text = sum.ToString() ;
                                a = sum;
                            }
                            if (p == "/")
                            {
                                sum = (a / b);
                                textBox1.Text = sum.ToString();
                                a = sum;
                            }
                            pic = true;
                            _num = false;
                            break;
                                            
                        
                        
                        }            }
            }
        }
    }