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

界面截图

主要使用的是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. NFS配置项no_root_squash和root_squash的区别

    1.鸟哥的私房菜简体中文 http://linux-vbird.hillwood.cn/linux_server/0330nfs.htm 鸟哥的私房菜繁体中文 http://linux.vbird.o ...

  2. Intellij IDEA中使用Struts2

    据说struts2中有很多的漏洞, 不过作为学习我也就用了吧, 因为书上面是按着这个讲的呀. 难怪官网上也没有struts2.2.1的版本的下载. 1. 下载struts2.2.1 ga版本 2. 新 ...

  3. 用sql的select语句从数据库中获取数据

    基本的select语句 select语句中的算数表达式和NULL值 列的别名 使用连接符操作,literal character strings,alternative quote operator, ...

  4. Metasploit RPC服务共享

    1) 启动一个新的MSF RPC服务,-P参数后面指定连接到的RPC服务需要提供的口令,-U参数指定连接所需输入的用户名,使用-a 0.0.0.0将RPC服务绑定到所有的网络地址,否则服务默认只绑定到 ...

  5. Linux内核OOM机制的详细分析(转)

    Linux 内核 有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了 防止内存耗尽而内核会把该进程杀掉.典 ...

  6. LINQ之路 2:C# 3.0的语言功能(上)

    在上一篇的LINQ介绍中,我们已经看到了隐式类型变量var,扩展方法(extension method)和lambda表达式的身影.没错,他们正是LINQ技术的基石,是他们让LINQ的实现成为可能,并 ...

  7. iOS - UIDatePicker

    前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIDatePicker : UIControl <NSCoding> ...

  8. CSU 1802 小X的战斗力【拓扑dp】

    题目链接 题意:n个人,每个人有一个能力值.给出m组关系A, B, 表示A的能力值大于B的能力值. 问:m组关系中是否有自相矛盾的?若不矛盾,问:第1个人在所有人的能力值中排名第几?有多少人的能力值的 ...

  9. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  10. sp工具类编写

    package com.itheima.mobilesafe74.utils; import android.content.Context; import android.content.Share ...