小女子初学C#,学编计算器,只实现简单计算功能,但在纪录操作数或者是监听操作码的问题上有漏洞,麻烦高手指点指点,不胜感激!!!!
前面计算器面板可以不用看,主要是实现计算功能部分!如能我我修改,更是感激得五体投地!!!!
  public PForm()
  {
    
   
 //Backspace键
  void buttonBS_Click(object obj, EventArgs e)
  {
   SendKeys.Send("{BACKSPACE}");
   tb.Focus();
  }
  //CE键
  void buttonCE_Click(object obj, EventArgs e)
  {
   tb.Text = "";
   v1 = "";
   tb.Focus();
  }
  //C键
  void buttonC_Click(object obj, EventArgs e)
  {
   tb.Text = "";
   tb.Focus();
  }
  //开方
  void buttonSQ_Click(object obj,EventArgs e)
  {
   double i;
   res = Double.Parse(tb.Text);
   i = Math.Sqrt(res);
   tb.Text = i.ToString();
  }  //1/x 按钮
  void buttonQUY_Click(object obj,EventArgs e)
  {
   res = Double.Parse(tb.Text);
   if ( res != 0 )
   {
   tb.Text = (1/res).ToString();
   }
   else
   {
   MessageBox.Show("error");
   }
  }  //%的点击事件
  void buttonMOD_Click(object obj,EventArgs e)
  {
   double i = Double.Parse(tb.Text);
   res =  (i * i) / 100;
   tb.Text = res.ToString();
  }
  void buttonEqu_Click(object obj,EventArgs e)
  {
   Cal();
   tb.Text = res.ToString();
  }  //数字点击事件
  void buttonNum_Click(object obj, EventArgs e)
  {   Button b = (Button)obj;
   SendKeys.Send(b.Text);
   v1=tb.Text;
   tb.Focus();
  }  //操作符点击事件
  void buttonOPER_Click(object obj, EventArgs e)
  {
   flag ++;
   Button b = (Button)obj;
   opt = Char.Parse(b.Text);
   if(flag <= 1)
   {
   tb.Text = "";
        }   else 
       {
        Cal();
        v1 = res.ToString();
       }
       tb.Text = res.ToString();  }
  void Cal()
  {
    switch(opt)
    {
      case '+':  res = Double.Parse(v1) + Double.Parse(tb.Text); break;
      case '-':  res = Double.Parse(v1) - Double.Parse(tb.Text); break;
      case '*':  res = Double.Parse(v1) * Double.Parse(tb.Text); break;
      case '/':  res = Double.Parse(v1) / Double.Parse(tb.Text); break;
      default:                                                  break;
    }
  }
  static void Main()
  {
    Application.Run(new PForm());
  }
}