using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace 计算器1
{
public partial class Form1 : Form
{
//存储上次点击了什么按钮,0代表什么都没点击,1代表点击了数字按钮,2代表点击了运算符
private int prev = ;
//存储计算的中间结果
private decimal zj = ;
//记录上次按的什么运算符
private string prevysf = "+";
public Form1()
{
InitializeComponent();
}
//数字按钮
private void button15_Click(object sender, EventArgs e)
{
//将事件源转换为按钮
Button btn = sender as Button;
//替换(如果下面文本框内容为0或者上次点击了运算符)
if (prev == || txtbottom.Text == "")
{
txtbottom.Text = btn.Text;
}
//追加(如果下面文本框内容不为0并且上次没有点击运算符)
else
{
txtbottom.Text += btn.Text;
}
//点击了数字按钮
prev = ;
}
//运算符按钮
private void button16_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
//上次按了数字
if (prev == )
{
txttop.Text += txtbottom.Text + btn.Text;
switch (prevysf)
{
case "+":
zj = zj + Convert.ToDecimal(txtbottom.Text);
break;
case "-":
zj = zj - Convert.ToDecimal(txtbottom.Text);
break;
case "*":
zj = zj * Convert.ToDecimal(txtbottom.Text);
break;
case "/":
zj = zj / Convert.ToDecimal(txtbottom.Text);
break;
}
txtbottom.Text = zj.ToString();
}
//上次按了运算符
else
{
string s = txttop.Text;
s = s.Substring(, s.Length - );
s = s + btn.Text;
txttop.Text = s;
}
//点击了运算符
prev = ;
//记录下运算符
prevysf = btn.Text;
}
//清零
private void button1_Click(object sender, EventArgs e)
{
txttop.Text = "";
txtbottom.Text = "";
prev = ;
zj = ;
prevysf = "+";
}
//清零
private void button2_Click(object sender, EventArgs e)
{
txtbottom.Text = "";
}
//等号
private void button20_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
txttop.Text += txtbottom.Text + btn.Text; switch (prevysf)
{
case "+":
zj = zj + Convert.ToDecimal(txtbottom.Text);
break;
case "-":
zj = zj - Convert.ToDecimal(txtbottom.Text);
break;
case "*":
zj = zj * Convert.ToDecimal(txtbottom.Text);
break;
case "/":
zj = zj / Convert.ToDecimal(txtbottom.Text);
break;
} txtbottom.Text = zj.ToString();
txttop.Text = ""; zj = ;
}
//小数点
private void button19_Click(object sender, EventArgs e)
{
if(txtbottom.Text.Contains(".")==false)
txtbottom.Text += ".";
}
//退格
private void button3_Click(object sender, EventArgs e)
{
txtbottom.Text = txtbottom.Text.Substring(,txtbottom.TextLength-);
}
//±号控制
private void button17_Click(object sender, EventArgs e)
{
if(!txtbottom.Text.Contains("-"))
txtbottom.Text= txtbottom.Text.Insert(, "-");
else if (txtbottom.Text.Contains("-"))
txtbottom.Text = txtbottom.Text.Replace("-","");
}
//键盘控制
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// if it is a hotkey, return true; otherwise, return false
switch (keyData)
{
case Keys.NumPad0:
//焦点定位到控件button_num_0上,即数字0键上
button18.Focus();
//执行按钮点击操作
button18.PerformClick();
return true;
case Keys.NumPad1:
button13.Focus();
button13.PerformClick();
return true;
case Keys.NumPad2:
button14.Focus();
button14.PerformClick();
return true;
case Keys.NumPad3:
button15.Focus();
button15.PerformClick();
return true;
case Keys.NumPad4:
button9.Focus();
button9.PerformClick();
return true;
case Keys.NumPad5:
button10.Focus();
button10.PerformClick();
return true;
case Keys.NumPad6:
button11.Focus();
button11.PerformClick();
return true;
case Keys.NumPad7:
button5.Focus();
button5.PerformClick();
return true;
case Keys.NumPad8:
button6.Focus();
button6.PerformClick();
return true;
case Keys.NumPad9:
button7.Focus();
button7.PerformClick();
return true;
case Keys.Back:
button3.Focus();
button3.PerformClick();
return true;
case Keys.Divide:
button4.Focus();
button4.PerformClick();
return true;
case Keys.Multiply:
button8.Focus();
button8.PerformClick();
return true;
case Keys.Subtract:
button12.Focus();
button12.PerformClick();
return true;
case Keys.Add:
button16.Focus();
button16.PerformClick();
return true;
case Keys.Enter:
button20.Focus();
button20.PerformClick();
return true;
case Keys.Delete:
button19.Focus();
button19.PerformClick();
return true;
//......
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
} }
}

winform 计算器的更多相关文章

  1. Winform——计算器

    namespace 计算器2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } pr ...

  2. Winform——计算器进制转换

    namespace 进制转换2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } p ...

  3. [原][C#][winForm]分级基金折溢价WinForm网络计算器

    分级基金折溢价WinForm网络计算器 通过子/母基金代码,从 [ 东方财富网,天天基金网,新浪 ] 抓取分级基金的子母基金数据(代码,名称,净值,价格), 并计算出子基金(A基金,B基金)以及母基金 ...

  4. winform操作windows系统计算器

    winform对系统计算器的调用,启动,最大化最小化显示,在mainwindow设置topmost=true时,正常显示计算器并置顶. /// <summary> /// 获取窗体的句柄函 ...

  5. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  6. winform(四)——简单计算器制作

    效果图: 代码区: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  7. winform制作简单计算器

    public Form1() { InitializeComponent(); textBox2.Text = ";//主显示屏 textBox1.Text = "";/ ...

  8. WinForm 制作一个简单的计算器

    namespace WindowsFormsApplication6 { public partial class Form1 : Form { //存储上次点击了什么按钮,0代表什么都没有点击,1代 ...

  9. C# winform(计算器)

随机推荐

  1. Linux的磁盘分区(1)

    分区命名: 1.Linux下的分区命名不同于windows下的命名,对硬盘如IDE硬盘采用类似/dev/hdxy的方式来命名,其中hd表示分区所在的设备类型,如IDE硬盘,x表示硬盘盘号(a为基本主盘 ...

  2. Eclispe怎么给工作空间下的项目分组

    Eclispe怎么给工作空间下的项目分组 第一步,打开Java Working Set 第二步,添加分组 第三步,选择分组

  3. Spring 整合 Redis(二)

    pom构建: <modelVersion>4.0.0</modelVersion> <groupId>com.x.redis</groupId> < ...

  4. CSS3两个动画顺序衔接播放

    问题描述: 第一个动画先播放,播放完成后,第二个动画紧接着播放. 解决办法: 1. 将第二个的延迟时间(animation-delay) 设置成第一个的持续时间( animation-duration ...

  5. AsyncTask的使用

    简单的AnsyTask的使用demo 1.定义一个模拟网络操作的类 package com.example.administrator.myapplication; /** * Created by ...

  6. django1.9 创建数据表

    1.在setting.py 中注册app: 2.编写models.py 文件创建表结构: (生成的表默认是: app名称_定义的表面  ) 3.执行命令: python manage.py check ...

  7. CentOS 安装

    选择选择启动介质 Install or upgrade an existing system: 安装或升级现有的系统 install system with basic video driver: 安 ...

  8. 使用 mock.js 让前端开发与后端独立

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. # 20145334赵文豪 《Java程序设计》第5周学习总结

    20145334赵文豪 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 1.使用try.catch打包System.in.read(),声明throws java.io.IO ...

  10. 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

    Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解   多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...