C#编写简单计算器的问题
小女子初学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());
}
}
------解决方案--------------------说的撒呢,那里出错了,错误代码红色标明。
------解决方案--------------------计算器算是很简单的代码了,记得以前刚学BCB时,用C++做了一个。
细心一点,仔细调试OK
------解决方案--------------------要是能结构更好点。。。就好了。。。
------解决方案--------------------至少Cal方法里对除法没有作除0的处理~~