使用窗体写的计算器小程序,不是十分完善,键盘输入只能输入数字键,其他需要换档键的键的输入没有搞懂,先发上来左右,以作留存。

界面截图

主要使用的是TextBox和button控件

 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 WindowsFormsApplication1
{
public partial class jisuanqi : Form
{
//存储上次点击了什么按钮,0代表什么都没点击,1代表点击了数字按钮,2代表点击了运算符
private int prev = ;
//存储中间结果
private decimal zjjg = ;
//记录上次按的什么运算符
private string preysf = "+";
//记录上次按的是等号
private int denghao = ; public jisuanqi()
{
InitializeComponent();
} private void button1_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 button4_Click(object sender, EventArgs e)
{
Button btn = sender as Button; //上次按了数字
if (prev == )
{
TXTTOP.Text += TXTbottom.Text + btn.Text;
switch (preysf)
{
case "+":
zjjg = zjjg + Convert.ToDecimal(TXTbottom.Text);
break;
case "-":
zjjg = zjjg - Convert.ToDecimal(TXTbottom.Text);
break;
case "*":
zjjg = zjjg * Convert.ToDecimal(TXTbottom.Text);
break;
case "/":
zjjg = zjjg / Convert.ToDecimal(TXTbottom.Text);
break;
}
TXTbottom.Text = zjjg.ToString();
}
//上次按了运算符///
else
{
string s = TXTTOP.Text;
if (s.Length >= )
{
s = s.Substring(, s.Length - );
s = s + btn.Text;
}
else
{
s = "";
s = s + btn.Text;
}
TXTTOP.Text = s;
}
//加号
prev = ;
preysf = btn.Text;
} private void button15_Click(object sender, EventArgs e)
{
TXTTOP.Text = "";
TXTbottom.Text = "";
prev = ;
zjjg = ;
preysf = "+";
} private void jisuanqi_KeyDown(object sender, KeyEventArgs e)
{ if (
e.KeyCode == Keys.D0 || e.KeyCode == Keys.NumPad0 ||
e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1 ||
e.KeyCode == Keys.D2 || e.KeyCode == Keys.NumPad2 ||
e.KeyCode == Keys.D3 || e.KeyCode == Keys.NumPad3 ||
e.KeyCode == Keys.D4 || e.KeyCode == Keys.NumPad4 ||
e.KeyCode == Keys.D5 || e.KeyCode == Keys.NumPad5 ||
e.KeyCode == Keys.D6 || e.KeyCode == Keys.NumPad6 ||
e.KeyCode == Keys.D7 || e.KeyCode == Keys.NumPad7 ||
e.KeyCode == Keys.D8 || e.KeyCode == Keys.NumPad8 ||
e.KeyCode == Keys.D9 || e.KeyCode == Keys.NumPad9
)
{
if (prev == || TXTbottom.Text == "")
{
string a = e.KeyData.ToString();
TXTbottom.Text = a.Substring((a.Length-),);
}
else
{
string a = e.KeyData.ToString();
TXTbottom.Text += a.Substring((a.Length - ), ); }
prev = ;
}
//else if (
// //e.KeyCode == Keys.Add || e.KeyCode == Keys.Subtract || e.KeyCode == Keys.Multiply || e.KeyCode == Keys.Divide||
// e.KeyCode==Keys.Shift&&e.KeyCode==Keys.D8
// )
//{
// MessageBox.Show(e.KeyData.ToString());
//}
else if(e.KeyCode==Keys.Back)
{
string s = TXTbottom.Text;
if (s.Length >= )
{
s = s.Substring(, s.Length - );
}
else
{
s = "";
}
TXTbottom.Text = s;
}
} private void button17_Click(object sender, EventArgs e)
{
string s = TXTbottom.Text;
if (s.Length >= )
{
s = s.Substring(, s.Length - );
}
else
{
s = "";
}
TXTbottom.Text = s;
} private void button14_Click(object sender, EventArgs e)//等号
{
Button btn = sender as Button; //上次按了数字
if (prev == )
{
TXTTOP.Text += TXTbottom.Text + btn.Text;
switch (preysf)
{
case "+":
zjjg = zjjg + Convert.ToDecimal(TXTbottom.Text);
break;
case "-":
zjjg = zjjg - Convert.ToDecimal(TXTbottom.Text);
break;
case "*":
zjjg = zjjg * Convert.ToDecimal(TXTbottom.Text);
break;
case "/":
zjjg = zjjg / Convert.ToDecimal(TXTbottom.Text);
break;
}
TXTbottom.Text = zjjg.ToString();
}
//上次按了运算符///
else
{
string s = TXTTOP.Text;
if (s.Length >= )
{
s = s.Substring(, s.Length - );
s = s + btn.Text;
}
else
{
s = "";
s = s + btn.Text;
}
TXTbottom.Text = s;
}
//加号
prev = ;
preysf = btn.Text;
TXTTOP.Text = "";
zjjg = ;
preysf = "+";
denghao = ;
} private void jisuanqi_Load(object sender, EventArgs e)
{ }
}
}

程序冗余还是有点多,目前没有想要要怎么精简

C#窗体计算器的更多相关文章

  1. 使用listview空控件展示数据

    1.使用listview控件可以一次性的将有关的全部图像保存在控件中,建立集合图像. 图像列表控件的主要属性 属性                                           ...

  2. 人品计算器 JFrame 窗体软件版 JPanel JTextField JTextArea JButtton JLabel setContentPane Swing包(用户界面工具包)

    import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.eve ...

  3. C# 窗体程序入门 之计算器

    之前一直在java的B/S,这次被要求做一个C/S,其中客户端主要是界面和socket通信.因为没有使用过C#和Visual Studio的控件编程,先来个HelloWorld. 我的环境是visua ...

  4. 计算器软件实现系列(六)windowform窗体+SQL+策略模式

    一 整体概述 这个计算器软件的功能和以前的功能基本上一样,只不过是数据的保存形式发生了变化,,以前用的是txt文件保存,现在更正用SQL数据库,现在更改了以前的文件保存形式,是三层架构中数据层的更换, ...

  5. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

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

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

  7. c#制作计算器全过程

    前言: 网上看的计算器制作只有代码,没有为全过程下面贴图,所以我在下面主要是贴图,让大家零基础制作计算器. 我的环境是visual studio 2010,其他版本例如2008,2012 都可以 1. ...

  8. java 24 - 9 GUI 之 给窗体换图标、设置启动在屏幕中间、更换皮肤

    A.首先更改窗体左上角的图片 步骤一: 创建3个包,分别建立1个类 第一个是窗体的包,窗体类:设置窗体的主要布置和功能 第二个是资源包,图片:把想要改的图案拉进来 第三个是UI界面包,UI界面设计类: ...

  9. java 24 - 8 GUI之创建四则运算计算器(未校验版)

    这个是用NetBeans软件制作的,因为这个软件制作GUI任务比较方便 通过拖拽控件生成的窗体:(红色的名称是更改后的控件名称) 拉拽好布局后,要进行的步骤: A:更改想要进行操作的控件的名称(右键控 ...

随机推荐

  1. ABAP Enhancement:第一部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. MySQl的几个配置项

    对对于MySQL的日志功能,我们可以完全自己控制到底写还是不写.一般来说,binlog我们一般会开启,而对于慢查询我们一般会在开发的时候调试和观 察SQL语句的执行速度.但今天发现一个问题.在使用sh ...

  3. js判断ie11浏览器

    var isIE11 = (/Trident\/7\./).test(navigator.userAgent);

  4. nodePPT 这可能是迄今为止最好的网页版PPT

    demo例子为:http://qdemo.sinaapp.com/#0 下载地址为:https://github.com/ksky521/nodeppt/

  5. 2016中国APP分类排行榜参选入围产品公示

    2016中国APP分类排行榜参选入围产品公示   由中国科学院<互联网周刊>.中国社会科学院信息化研究中心.eNet硅谷动力共同主办的2016中国APP分类排行榜发布暨颁奖晚宴即将举行.此 ...

  6. Nginx模块学习之————accesskey权限模块使用(Nginx防盗链详细解说),防止别人下载文件和图片

    nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链 1.具体安装教程:http://www.cnblogs.com/tinywan/p/5983694. ...

  7. 内部使用final参数的原因

    局部内部类(即:定义在方法中的内部类),访问方法中的局部变量 : 局部变量的生命周期与对象的生命周期的不一致性!方法在执行完方法的局部变量就消失,而内部类如果有引用还是存在的,那么将找不到变量.此时设 ...

  8. 06 SQL执行计划

    解释计划 与 执行计划的 区别 随着可以得到解释计划输出的开发工具, 比如 toad 的普遍使用, 生成解释计划就变的相当简单. 而不简单的是得到执行计划. 解释计划 EXPLAIN PLAN 用来显 ...

  9. 关于level DB的相关资料

    可以参考: http://blog.csdn.net/houzengjiang/article/details/7718548 http://www.cnblogs.com/haippy/archiv ...

  10. 自定义获取焦点的TextView

    自定义控件编写流程 创建一个默认就能获取焦点的TextView 1.创建一个类继承至TextView,FocusTextView 2.重写其构造方法 //使用在通过java代码创建控件 public ...