实例介绍
【实例截图】
【核心代码】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Calcu { public partial class Form1 : Form { private double _num1 = 0, _num2 = 0, _result = 0; //第一个运算数,第二个运算数,结果 private string _operator = ""; //运算符号 private int _operatorCount = 0; //运算符数量 private bool _firstNumFlag = false; //首数字标志位 private int radix = 10; Button[] btns; public Form1() { InitializeComponent(); btns = new Button[]{ button0,button1, button2,button3,button4,button5,button6,button7, button8,button9 }; } //数字按钮的click响应方法 private void button0_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) //判断是否为首数字,是则替换,否则追加 { textBoxResult.Text = "0"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "0"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button1_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "1"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "1"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button2_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "2"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "2"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button3_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "3"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "3"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button4_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "4"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "4"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button5_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "5"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "5"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button6_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "6"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "6"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button7_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "7"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "7"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button8_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "8"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "8"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void button9_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "9"; _firstNumFlag = false; } else textBoxResult.Text = textBoxResult.Text "9"; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonDot_Click(object sender, EventArgs e) { if (_operator == "=")//如果前一运算符为等号且编辑框不空则清空编辑框 { textBoxResult.Text = ""; _operator = ","; } if (_firstNumFlag == true) { textBoxResult.Text = "."; _firstNumFlag = false; } else { if (textBoxResult.Text.IndexOf('.') == -1) textBoxResult.Text = textBoxResult.Text "."; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } // .-.*./的响应方法 private void buttonAdd_Click(object sender, EventArgs e) { _firstNumFlag = true; _operatorCount = _operatorCount 1; if (_operatorCount == 1) //判断是否为第一个运算符 { if (radix == 10) { _num1 = Convert.ToDouble(textBoxResult.Text); //保存第一个运算数 } else { _num1 = Convert.ToInt32(textBoxResult.Text, radix); } _operator = " "; //保存符号 textBoxResult.Text = ""; //清空 } else { if (radix == 10) { _num2 = Convert.ToDouble(textBoxResult.Text); } else { _num2 = Convert.ToInt32(textBoxResult.Text, radix); } if (_operator == " ") _num1 = _num1 _num2; else if (_operator == "-") _num1 = _num1 - _num2; else if (_operator == "*") _num1 = _num1 * _num2; else if (_operator == "/") _num1 = _num1 / _num2; _operator = " "; int q = radix; string s = Convert.ToString((int)_num1, q); textBoxResult.Text = s; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonSub_Click(object sender, EventArgs e) { _firstNumFlag = true; _operatorCount = _operatorCount 1; if (_operatorCount == 1) //判断是否为第一个运算符 { if (radix == 10) { _num1 = Convert.ToDouble(textBoxResult.Text); //保存第一个运算数 } else { _num1 = Convert.ToInt32(textBoxResult.Text, radix); } _operator = "-"; //保存符号 textBoxResult.Text = ""; //清空 } else { if (radix == 10) { _num2 = Convert.ToDouble(textBoxResult.Text); } else { _num2 = Convert.ToInt32(textBoxResult.Text, radix); } if (_operator == " ") _num1 = _num1 _num2; else if (_operator == "-") _num1 = _num1 - _num2; else if (_operator == "*") _num1 = _num1 * _num2; else if (_operator == "/") _num1 = _num1 / _num2; _operator = "-"; int q = radix; string s = Convert.ToString((int)_num1, q); textBoxResult.Text = s; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonMul_Click(object sender, EventArgs e) { _firstNumFlag = true; _operatorCount = _operatorCount 1; if (_operatorCount == 1) //判断是否为第一个运算符 { if (radix == 10) { _num1 = Convert.ToDouble(textBoxResult.Text); //保存第一个运算数 } else { _num1 = Convert.ToInt32(textBoxResult.Text, radix); } _operator = "*"; //保存符号 textBoxResult.Text = ""; //清空 } else { if (radix == 10) { _num2 = Convert.ToDouble(textBoxResult.Text); } else { _num2 = Convert.ToInt32(textBoxResult.Text, radix); } if (_operator == " ") _num1 = _num1 _num2; else if (_operator == "-") _num1 = _num1 - _num2; else if (_operator == "*") _num1 = _num1 * _num2; else if (_operator == "/") _num1 = _num1 / _num2; _operator = "*"; int q = radix; string s = Convert.ToString((int)_num1, q); textBoxResult.Text = s; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonDiv_Click(object sender, EventArgs e) { _firstNumFlag = true; _operatorCount = _operatorCount 1; if (_operatorCount == 1) //判断是否为第一个运算符 { if (radix == 10) { _num1 = Convert.ToDouble(textBoxResult.Text); //保存第一个运算数 } else { _num1 = Convert.ToInt32(textBoxResult.Text, radix); } _operator = "/"; //保存符号 textBoxResult.Text = ""; //清空 } else { if (radix == 10) { _num2 = Convert.ToDouble(textBoxResult.Text); } else { _num2 = Convert.ToInt32(textBoxResult.Text, radix); } if (_operator == " ") _num1 = _num1 _num2; else if (_operator == "-") _num1 = _num1 - _num2; else if (_operator == "*") _num1 = _num1 * _num2; else if (_operator == "/") _num1 = _num1 / _num2; _operator = "/"; int q = radix; string s = Convert.ToString((int)_num1, q); textBoxResult.Text = s; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonEqu_Click(object sender, EventArgs e) { if (radix == 10) { _num2 = Convert.ToDouble(textBoxResult.Text); } else { _num2 = Convert.ToInt32(textBoxResult.Text, radix); } if (_operator == " ") _result = _num1 _num2; else if (_operator == "-") _result = _num1 - _num2; else if (_operator == "*") _result = _num1 * _num2; else if (_operator == "/") _result = _num1 / _num2; //进行运算 int q = radix; string s = Convert.ToString((int)_result, q); textBoxResult.Text = s; //显示结果 _operator = "="; _operatorCount = 0; //运算符号数清零 textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonBackSpace_Click(object sender, EventArgs e) { //如果不为空 if (textBoxResult.Text.Length > 0) textBoxResult.Text = textBoxResult.Text.Substring(0, textBoxResult.Text.Length - 1); //去除最后一个字符 textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonClear_Click(object sender, EventArgs e) { _num1 = 0; _num2 = 0; _result = 0; _operator = ""; _firstNumFlag = false; textBoxResult.Text = ""; textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void buttonSign_Click(object sender, EventArgs e) { //如果非空 if (textBoxResult.Text.Length >= 1) { string firstChar = textBoxResult.Text.Substring(0, 1);//获取第一个字符 //判断第一个字符正负 if (firstChar == "-") textBoxResult.Text = " " textBoxResult.Text.Substring(1, textBoxResult.Text.Length - 1); else if (firstChar == " ") textBoxResult.Text = "-" textBoxResult.Text.Substring(1, textBoxResult.Text.Length - 1); else textBoxResult.Text = "-" textBoxResult.Text; } textBoxResult.Focus(); //使焦点落到编辑框中 textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } //编辑框键盘下压事件响应方法 private void textBoxResult_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == '0') button0_Click(sender, e); else if (e.KeyChar == '1') button1_Click(sender, e); else if (e.KeyChar == '2') button2_Click(sender, e); else if (e.KeyChar == '3') button3_Click(sender, e); else if (e.KeyChar == '4') button4_Click(sender, e); else if (e.KeyChar == '5') button5_Click(sender, e); else if (e.KeyChar == '6') button6_Click(sender, e); else if (e.KeyChar == '7') button7_Click(sender, e); else if (e.KeyChar == '8') button8_Click(sender, e); else if (e.KeyChar == '9') button9_Click(sender, e); else if (e.KeyChar == '.') buttonDot_Click(sender, e); else if (e.KeyChar == ' ') buttonAdd_Click(sender, e); else if (e.KeyChar == '-') buttonSub_Click(sender, e); else if (e.KeyChar == '*') buttonMul_Click(sender, e); else if (e.KeyChar == '/') buttonDiv_Click(sender, e); else if (e.KeyChar == '=') buttonEqu_Click(sender, e); else if (e.KeyChar == 'c') buttonClear_Click(sender, e); else if (e.KeyChar == '\b') buttonBackSpace_Click(sender, e); textBoxResult.Select(textBoxResult.Text.Length, 0);//使光标落在编辑框最后面 } private void SetInputFocus() { textBoxResult.Focus(); textBoxResult.SelectionStart = textBoxResult.TextLength; textBoxResult.SelectionLength = 0; } //设置进制。 private void SetInputRadix(int newRadix) { if (textBoxResult.TextLength == 0) { radix = newRadix; return; } else { if (newRadix == 10) { int a = Convert.ToInt32(textBoxResult.Text, radix); textBoxResult.Text = Convert.ToString(a); radix = newRadix; } else { int a = Convert.ToInt32(textBoxResult.Text,radix); radix = newRadix; int q = radix; string s = Convert.ToString((int)a, q); textBoxResult.Text = s; //显示结果 } } } //设置显示的按钮 private void SetButtonEnabled(int radix) { for (int i = 0; i < radix; i ) btns[i].Enabled = true; for (int i = radix; i < btns.Length; i ) btns[i].Enabled = false; if (radix == 10) { buttonDot.Enabled = true; buttonSign.Enabled = true; } else { buttonDot.Enabled = false; buttonSign.Enabled = false; } } private void radioButton2_Click(object sender, EventArgs e) { _operatorCount = 0; //运算符号数清零 SetInputRadix(2); SetButtonEnabled(2); SetInputFocus(); } private void radioButton8_Click(object sender, EventArgs e) { _operatorCount = 0; //运算符号数清零 SetInputRadix(8); SetButtonEnabled(8); SetInputFocus(); } private void radioButton10_Click(object sender, EventArgs e) { _operatorCount = 0; //运算符号数清零 SetInputRadix(10); SetButtonEnabled(10); SetInputFocus(); } private void Form1_Load(object sender, EventArgs e) { radix = 10; radioButton10.Checked = true; SetButtonEnabled(radix); SetInputFocus(); } } }
标签: 计算器
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论