编写的计算器程序,如何用Keypress事件实现键盘运算
using System;using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
txtDisplay.Text = "0.";
}
private bool ClearDisplay = true;
string LastInput;
bool exit_小数点 = false;
bool DecimalFlag = false;
private string Operator;
private double Operand1;
private double Operand2;
private double result;
private System.Windows.Forms.Button btn;
private void button11_Click(object sender, EventArgs e)
{
txtDisplay.Text = "";
}
private void handleDigits(object sender, EventArgs e)
{
btn = (Button)sender;
if (ClearDisplay)
{
txtDisplay.Text = "";
ClearDisplay = false;
}
txtDisplay.Text += btn.Text;
}
private void handleoperator(object sender, EventArgs e)
{
btn = (Button)sender;
Operator = btn.Text;
Operand1 = System.Convert.ToDouble(txtDisplay.Text);
txtDisplay.Text = "";
}
private void button19_Click(object sender, EventArgs e)
{
Operand2 = System.Convert.ToDouble(txtDisplay.Text);
switch (Operator)
{
case "+":
result = Operand1 + Operand2;
txtDisplay.Text = result.ToString();
break;
case "-":
result = Operand1 - Operand2;
txtDisplay.Text = result.ToString();
break;
case "*":
result = Operand1 * Operand2;
txtDisplay.Text = result.ToString();
break;
case "/":
if (Operand2 == 0)
{
txtDisplay.Text = "除数不能为零。";
}
else
{
result = Operand1 / Operand2;
txtDisplay.Text = result.ToString();
}
break;
case "%":
result = Operand1 % Operand2;
txtDisplay.Text = result.ToString();
break;
}
ClearDisplay = true;
}
private void button18_Click(object sender, EventArgs e)
{
result = -Convert.ToDouble(txtDisplay.Text);
txtDisplay.Text = result.ToString();
}
private void button17_Click(object sender, EventArgs e)
{
if (txtDisplay.Text != "0")
{
result = 1.0 / Convert.ToDouble(txtDisplay.Text);
txtDisplay.Text = result.ToString();
ClearDisplay = true;
}
else
{
txtDisplay.Text = "除数不能为零。";
}
}
private void button21_Click(object sender, EventArgs e)
{
result = Convert.ToDouble(txtDisplay.Text) * Convert.ToDouble(txtDisplay.Text);
txtDisplay.Text = result.ToString();
}
private void button22_Click(object sender, EventArgs e)
{
int i = txtDisplay.Text.Length;
if (i > 0)
txtDisplay.Text = txtDisplay.Text.Remove(i - 1);
}
private void button23_Click(object sender, EventArgs e)
{
txtDisplay.Text = null;
DecimalFlag = false;
LastInput = "CE";
}
private void button12_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + ".";
}
private void txtDisplay_KeyPress(object sender, KeyPressEventArgs e)
{
//用于只接受键盘数字
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
//以下是自定义控件
//主要是用于接受退格键和‘.’字符 并且此字符只能有一个
if (e.KeyChar == (char)8)
{
e.Handled = false;
}
if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf(".") < 0)
{
e.Handled = false;
}
}
}
}
[ 本帖最后由 卡拉拉 于 2013-4-7 13:40 编辑 ]