实例介绍
【实例截图】
【核心代码】
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace calc
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Calculator1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btn1;
private System.Windows.Forms.Button btn2;
private System.Windows.Forms.Button btn3;
private System.Windows.Forms.Button btn4;
private System.Windows.Forms.Button btn5;
private System.Windows.Forms.Button btn6;
private System.Windows.Forms.Button btn7;
private System.Windows.Forms.Button btn8;
private System.Windows.Forms.Button btn9;
private System.Windows.Forms.Button btn0;
private System.Windows.Forms.Button btnAdd;
private System.Windows.Forms.Button btnSubtract;
private System.Windows.Forms.Button btnMultiply;
private System.Windows.Forms.Button btnDivide;
private System.Windows.Forms.TextBox txtResult;
private System.Windows.Forms.Button btnEquals;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.Button btnNegative;
private System.Windows.Forms.Button btnDecimal;
private int opMain = 0; // 1(加法) 2(减法) 3(乘法) 4(除法)
private double mainNum1 = 0; // 存储第一个数
private double mainNum2 = 0; // 存储第二个数
private bool isSecond = false; // 用来判断输入的是第一个还是第二个数
private bool isDone = false; // 用来判断是否按了等于按钮
private bool isDecimal = false; // 用了判断是否有小数
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Calculator1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Calculator1));
this.btnSubtract = new System.Windows.Forms.Button();
this.btnDivide = new System.Windows.Forms.Button();
this.btnEquals = new System.Windows.Forms.Button();
this.btnDecimal = new System.Windows.Forms.Button();
this.btn2 = new System.Windows.Forms.Button();
this.btn3 = new System.Windows.Forms.Button();
this.btnClear = new System.Windows.Forms.Button();
this.btn1 = new System.Windows.Forms.Button();
this.btn6 = new System.Windows.Forms.Button();
this.btn7 = new System.Windows.Forms.Button();
this.btn4 = new System.Windows.Forms.Button();
this.btn5 = new System.Windows.Forms.Button();
this.btn8 = new System.Windows.Forms.Button();
this.btn9 = new System.Windows.Forms.Button();
this.btnAdd = new System.Windows.Forms.Button();
this.btnMultiply = new System.Windows.Forms.Button();
this.btnNegative = new System.Windows.Forms.Button();
this.btn0 = new System.Windows.Forms.Button();
this.txtResult = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// btnSubtract
//
this.btnSubtract.Location = new System.Drawing.Point(150, 95);
this.btnSubtract.Name = "btnSubtract";
this.btnSubtract.Size = new System.Drawing.Size(32, 32);
this.btnSubtract.TabIndex = 0;
this.btnSubtract.TabStop = false;
this.btnSubtract.Text = "-";
this.btnSubtract.Click = new System.EventHandler(this.btnSubtract_Click);
//
// btnDivide
//
this.btnDivide.Location = new System.Drawing.Point(150, 175);
this.btnDivide.Name = "btnDivide";
this.btnDivide.Size = new System.Drawing.Size(32, 32);
this.btnDivide.TabIndex = 0;
this.btnDivide.TabStop = false;
this.btnDivide.Text = "/";
this.btnDivide.Click = new System.EventHandler(this.btnDivide_Click);
//
// btnEquals
//
this.btnEquals.Location = new System.Drawing.Point(150, 227);
this.btnEquals.Name = "btnEquals";
this.btnEquals.Size = new System.Drawing.Size(32, 32);
this.btnEquals.TabIndex = 0;
this.btnEquals.TabStop = false;
this.btnEquals.Text = "=";
this.btnEquals.Click = new System.EventHandler(this.btnEquals_Click);
//
// btnDecimal
//
this.btnDecimal.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnDecimal.Location = new System.Drawing.Point(98, 227);
this.btnDecimal.Name = "btnDecimal";
this.btnDecimal.Size = new System.Drawing.Size(32, 32);
this.btnDecimal.TabIndex = 0;
this.btnDecimal.TabStop = false;
this.btnDecimal.Text = ".";
this.btnDecimal.Click = new System.EventHandler(this.btnDecimal_Click);
//
// btn2
//
this.btn2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn2.Location = new System.Drawing.Point(62, 55);
this.btn2.Name = "btn2";
this.btn2.Size = new System.Drawing.Size(32, 32);
this.btn2.TabIndex = 0;
this.btn2.TabStop = false;
this.btn2.Text = "2";
this.btn2.Click = new System.EventHandler(this.btn2_Click);
//
// btn3
//
this.btn3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn3.Location = new System.Drawing.Point(102, 55);
this.btn3.Name = "btn3";
this.btn3.Size = new System.Drawing.Size(32, 32);
this.btn3.TabIndex = 0;
this.btn3.TabStop = false;
this.btn3.Text = "3";
this.btn3.Click = new System.EventHandler(this.btn3_Click);
//
// btnClear
//
this.btnClear.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClear.ForeColor = System.Drawing.Color.OrangeRed;
this.btnClear.Location = new System.Drawing.Point(22, 227);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(32, 32);
this.btnClear.TabIndex = 0;
this.btnClear.TabStop = false;
this.btnClear.Text = "C";
this.btnClear.Click = new System.EventHandler(this.btnClear_Click);
//
// btn1
//
this.btn1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn1.Location = new System.Drawing.Point(22, 55);
this.btn1.Name = "btn1";
this.btn1.Size = new System.Drawing.Size(32, 32);
this.btn1.TabIndex = 0;
this.btn1.TabStop = false;
this.btn1.Text = "1";
this.btn1.Click = new System.EventHandler(this.btn1_Click);
//
// btn6
//
this.btn6.Location = new System.Drawing.Point(102, 95);
this.btn6.Name = "btn6";
this.btn6.Size = new System.Drawing.Size(32, 32);
this.btn6.TabIndex = 0;
this.btn6.TabStop = false;
this.btn6.Text = "6";
this.btn6.Click = new System.EventHandler(this.btn6_Click);
//
// btn7
//
this.btn7.Location = new System.Drawing.Point(22, 135);
this.btn7.Name = "btn7";
this.btn7.Size = new System.Drawing.Size(32, 32);
this.btn7.TabIndex = 0;
this.btn7.TabStop = false;
this.btn7.Text = "7";
this.btn7.Click = new System.EventHandler(this.btn7_Click);
//
// btn4
//
this.btn4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn4.Location = new System.Drawing.Point(22, 95);
this.btn4.Name = "btn4";
this.btn4.Size = new System.Drawing.Size(32, 32);
this.btn4.TabIndex = 0;
this.btn4.TabStop = false;
this.btn4.Text = "4";
this.btn4.Click = new System.EventHandler(this.btn4_Click);
//
// btn5
//
this.btn5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn5.Location = new System.Drawing.Point(62, 95);
this.btn5.Name = "btn5";
this.btn5.Size = new System.Drawing.Size(32, 32);
this.btn5.TabIndex = 0;
this.btn5.TabStop = false;
this.btn5.Text = "5";
this.btn5.Click = new System.EventHandler(this.btn5_Click);
//
// btn8
//
this.btn8.Location = new System.Drawing.Point(62, 135);
this.btn8.Name = "btn8";
this.btn8.Size = new System.Drawing.Size(32, 32);
this.btn8.TabIndex = 0;
this.btn8.TabStop = false;
this.btn8.Text = "8";
this.btn8.Click = new System.EventHandler(this.btn8_Click);
//
// btn9
//
this.btn9.Location = new System.Drawing.Point(102, 135);
this.btn9.Name = "btn9";
this.btn9.Size = new System.Drawing.Size(32, 32);
this.btn9.TabIndex = 0;
this.btn9.TabStop = false;
this.btn9.Text = "9";
this.btn9.Click = new System.EventHandler(this.btn9_Click);
//
// btnAdd
//
this.btnAdd.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAdd.Location = new System.Drawing.Point(150, 55);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(32, 32);
this.btnAdd.TabIndex = 0;
this.btnAdd.TabStop = false;
this.btnAdd.Text = " ";
this.btnAdd.Click = new System.EventHandler(this.btnAdd_Click);
//
// btnMultiply
//
this.btnMultiply.Location = new System.Drawing.Point(150, 135);
this.btnMultiply.Name = "btnMultiply";
this.btnMultiply.Size = new System.Drawing.Size(32, 32);
this.btnMultiply.TabIndex = 0;
this.btnMultiply.TabStop = false;
this.btnMultiply.Text = "*";
this.btnMultiply.Click = new System.EventHandler(this.btnMultiply_Click);
//
// btnNegative
//
this.btnNegative.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnNegative.Location = new System.Drawing.Point(60, 227);
this.btnNegative.Name = "btnNegative";
this.btnNegative.Size = new System.Drawing.Size(32, 32);
this.btnNegative.TabIndex = 0;
this.btnNegative.TabStop = false;
this.btnNegative.Text = " /-";
this.btnNegative.Click = new System.EventHandler(this.btnNegative_Click);
//
// btn0
//
this.btn0.Location = new System.Drawing.Point(62, 175);
this.btn0.Name = "btn0";
this.btn0.Size = new System.Drawing.Size(32, 32);
this.btn0.TabIndex = 0;
this.btn0.TabStop = false;
this.btn0.Text = "0";
this.btn0.Click = new System.EventHandler(this.btn0_Click);
//
// txtResult
//
this.txtResult.Location = new System.Drawing.Point(8, 12);
this.txtResult.Name = "txtResult";
this.txtResult.Size = new System.Drawing.Size(193, 21);
this.txtResult.TabIndex = 1;
this.txtResult.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
//
// Calculator1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(213, 274);
this.Controls.Add(this.btnDecimal);
this.Controls.Add(this.btnNegative);
this.Controls.Add(this.btnClear);
this.Controls.Add(this.btnEquals);
this.Controls.Add(this.btnAdd);
this.Controls.Add(this.btnSubtract);
this.Controls.Add(this.btnMultiply);
this.Controls.Add(this.btnDivide);
this.Controls.Add(this.btn0);
this.Controls.Add(this.btn9);
this.Controls.Add(this.btn8);
this.Controls.Add(this.btn7);
this.Controls.Add(this.btn6);
this.Controls.Add(this.btn5);
this.Controls.Add(this.btn4);
this.Controls.Add(this.btn3);
this.Controls.Add(this.btn2);
this.Controls.Add(this.txtResult);
this.Controls.Add(this.btn1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Calculator1";
this.Text = "计算器";
this.KeyDown = new System.Windows.Forms.KeyEventHandler(this.Calculator1_KeyDown);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Calculator1());
}
public void setText(String textset)
{
if(textset.Equals("clear")) //If the user hits the clear button
{
txtResult.Text = ""; //Clear the text and reset the boolean variables.
isDone = false;
isSecond = false;
isDecimal = false;
}
else
{
if(isSecond) //Determine if the number being entered is the begining of the second number. If it is:
{
txtResult.Text = textset; //Start the text over and set the first # to what the user enters
isSecond = false; //So Calculator knows to continue the # rather than making a new one.
isDecimal = false;
}
else
{
if(isDone) //isDone lets the program know that the user just hit "=" and if they press another # to start a new number.
{
txtResult.Text = textset;
isDone=false; //Set isDone to false so that the number just started is added on to and a new # is not started.
}
else
txtResult.Text = textset; //Simply add on to the existing #.
}
}
btnEquals.Select(); //Set the focus back to the "=" button.
}
public void Calc(double num1, double num2, int op)
{
double answer = 0;//Initialize answer to 0;
switch(op) //Determine which operation to perform depending on the value of "op"
{
case 1:
answer = num1 num2;
break;
case 2:
answer = num1 - num2;
break;
case 3:
answer = num1 * num2;
break;
case 4:
answer = num1 / num2;
break;
}
setText(answer.ToString()); //Show the answer in the textbox;
}
private void doEquals()
{
mainNum2 = double.Parse(txtResult.Text); //Set the value of the second number
setText("clear"); //Clear the textbox
Calc(mainNum1, mainNum2,opMain); //Call the Calc method
isDone = true; //Set isDone to true so that if another # is pressed, the program will begin a new number
}
private void changeSign()
{
double storNum; //Variable to store value of number
if(txtResult.Text.Length > 0) //If there is a number...
{
storNum = double.Parse(txtResult.Text); //Store its value
storNum *= -1; //multiply by negative 1
txtResult.Text = storNum.ToString(); //put it in the textbox.
}
btnEquals.Select(); //Set focus to "=" button
}
private void setOperator(int operation)
{
if(txtResult.Text.Length > 0)//Make sure that the user entered a number
{
opMain = operation; //Store the operation
mainNum1 = double.Parse(txtResult.Text); //Store the value of the first number
isSecond = true; //Let the program know to begin the second number
isDone = false; //If a operator button is pressed before a new number, let the program know to start a new number.
btnEquals.Select(); //Set the focus to the equals button.
}
}
private void setDecimal()
{
if(!isDecimal)//Check for existing decimal
{
setText("."); //Add decimal
isDecimal = true; //Let program know decimal has been added
}
btnEquals.Select(); //Set focus to "=" button
}
public void filterKeys(int keyCode)
{
switch(keyCode)
{
case 96:
setText("0");
break;
case 97:
setText("1");
break;
case 98:
setText("2");
break;
case 99:
setText("3");
break;
case 100:
setText("4");
break;
case 101:
setText("5");
break;
case 102:
setText("6");
break;
case 103:
setText("7");
break;
case 104:
setText("8");
break;
case 105:
setText("9");
break;
case 67:
setText("clear");
break;
case 107:
setOperator(1);
break;
case 109:
setOperator(2);
break;
case 106:
setOperator(3);
break;
case 111:
setOperator(4);
break;
case 110:
setDecimal();
break;
}
}
private void Calculator1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
filterKeys(e.KeyValue);
}
private void btn1_Click(object sender, System.EventArgs e)
{
setText("1");
}
private void btn2_Click(object sender, System.EventArgs e)
{
setText("2");
}
private void btn3_Click(object sender, System.EventArgs e)
{
setText("3");
}
private void btn4_Click(object sender, System.EventArgs e)
{
setText("4");
}
private void btn5_Click(object sender, System.EventArgs e)
{
setText("5");
}
private void btn6_Click(object sender, System.EventArgs e)
{
setText("6");
}
private void btn7_Click(object sender, System.EventArgs e)
{
setText("7");
}
private void btn8_Click(object sender, System.EventArgs e)
{
setText("8");
}
private void btn9_Click(object sender, System.EventArgs e)
{
setText("9");
}
private void btn0_Click(object sender, System.EventArgs e)
{
setText("0");
}
private void btnAdd_Click(object sender, System.EventArgs e)
{
setOperator(1);
}
private void btnSubtract_Click(object sender, System.EventArgs e)
{
setOperator(2);
}
private void btnMultiply_Click(object sender, System.EventArgs e)
{
setOperator(3);
}
private void btnDivide_Click(object sender, System.EventArgs e)
{
setOperator(4);
}
private void btnClear_Click(object sender, System.EventArgs e)
{
isSecond = false;
setText("clear");
}
private void btnNegative_Click(object sender, System.EventArgs e)
{
changeSign();
}
private void btnDecimal_Click(object sender, System.EventArgs e)
{
setDecimal();
}
private void btnEquals_Click(object sender, System.EventArgs e)
{
doEquals();
}
}
}
标签: 计算器
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论