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

界面截图

主要使用的是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. 单向和双向tvs管

    tvs管器件按极性可分为单极性和双极性两种,即单向tvs管和双向tvs管.    单向tvs管保护器件仅能对正脉冲或者负脉冲进行防护,而双向tvs管保护器件一端接要保护的线路,一端接地,无论来自反向还 ...

  2. 随机步法A-Z

    程序是生成一个10X10的字符数组,初始化时全为 ‘.’  的随机步法.程序必须随机的从一个元素 ‘走到’ 另一个元素,每次只向上.向下.向左或向右移动一个元素位置.已访问过的元素按访问顺序用字母A到 ...

  3. 关于<![CDATA[]]

    术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 XML 元素中,"<" 和 "&& ...

  4. Doragon Kuesuto 1.15

    #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { ; ; ; int actio ...

  5. Java中HashMap案例

    package ch8; import java.util.*; /** * Created by Jiqing on 2016/11/27. */ public class MapTest { pu ...

  6. (八)shell中的循环结构

    1.for循环(1)要求:能看懂.能改即可.不要求能够完全不参考写出来.因为毕竟嵌入式并不需要完全重新手写shell,系统管理员(服务器运维人员,应用层系统级管理开发的才需要完全掌握shell) 这里 ...

  7. Android AIDL Service

    AIDL Service //跨进程调用Service    一个APK想调用另一个APK中的Service 如何实现AIDL //定义两个进程之间的通信接口 Demo1 传递简单数据 AidlSer ...

  8. C++——类继承

    类库:类库由类声明和实现构成.类组合了数据表示和类方法,因此提供了比函数库更加完整的程序包. 类继承:从已有的类派生出新的类,派生类继承了原有类(称为基类)的特征,包括方法. 通过类继承可以完成的工作 ...

  9. Android是如何绘制View的

    当一个activity获得焦点时, 它会被要求绘制它的布局. Android框架将处理绘制的过程, 但是activity必须提供它的布局体系的根节点. 绘制将从根节点开始, 根节点被要求测量和绘制布局 ...

  10. c/c++小知识

    1.printf计算参数时是从右到左 2.(int&)a 表示把a在内存中的值强行当作int数来处理 3.float四字节,1位符号位(正数为0),8位指数位(0采取01111111),23位 ...