在WPF里实现计算器软件
一、具体代码
类代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows; namespace WpfApplication1
{
class lei
{
public interface Strategy
{
int calculate(int a, int b); }
public class Add : Strategy
{
public int calculate(int a, int b)
{
return a + b;
}
}
public class Sub : Strategy
{
public int calculate(int a, int b)
{
return a -b;
}
}
public class Mul : Strategy
{
public int calculate(int a, int b)
{
return a * b;
}
}
public class Div : Strategy
{
public int calculate(int a, int b)
{
return a / b;
}
} public class Content
{
private Strategy strategy;
public Content(Strategy strategy)
{
this.strategy = strategy;
}
public int calculate(int a, int b, String m)
{
return this.strategy.calculate(a, b);
}
}
}
}
MainWindow.xaml.cs代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO; using System.Windows.Threading;
using Microsoft.Win32; namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
string path = ".\text1.txt";
public static int right = ;
public static int Count = ;
private int t;
int a;
private void button1_Click(object sender, RoutedEventArgs e)
{ StreamWriter baocun1 = File.AppendText("baocun1.txt");
baocun1.WriteLine(textBox1.Text);
baocun1.Close();
StreamWriter baocun2 = File.AppendText("baocun2.txt");
baocun2.WriteLine(textBox2.Text);
baocun2.Close();
StreamWriter baocun3 = File.AppendText("baocun3.txt");
baocun3.WriteLine(textBox3.Text);
baocun3.Close(); textBox6.Text += textBox1.Text + textBox2.Text + textBox3.Text + label1.Content + textBox4.Text + "\n";
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
} private void button2_Click(object sender, RoutedEventArgs e)
{
textBox5.Text = t.ToString();
DispatcherTimer myTimer = new DispatcherTimer();
myTimer.Interval = new TimeSpan(, , ,);
myTimer.Tick += new EventHandler(Timer_Tick);
myTimer.Start();
string[] m = new string[];
m = File.ReadAllLines("baocun1.txt");
textBox1.Text = m[a];
string[] n = new string[];
n = File.ReadAllLines("baocun2.txt");
textBox2.Text = n[a];
string[] v = new string[];
v = File.ReadAllLines("baocun3.txt");
textBox3.Text = v[a];
a++;
} void Timer_Tick(object send, EventArgs e)
{
t = t + ;
textBox5.Text = t.ToString(); } private void button3_Click(object sender, RoutedEventArgs e)
{
//调用;
WpfApplication1.lei.Content content = null;
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox3.Text);
string m = textBox2.Text;
switch (m)
{
case "+":
content = new WpfApplication1.lei.Content(new WpfApplication1.lei.Add());
break;
case "-":
content = new WpfApplication1.lei.Content(new WpfApplication1.lei.Sub()); break;
case "*":
content = new WpfApplication1.lei.Content(new WpfApplication1.lei.Mul()); break;
case "/":
content = new WpfApplication1.lei.Content(new WpfApplication1.lei.Div()); break;
default:
break;
}
string answer = content.calculate(a, b, m).ToString(); if (textBox4.Text == answer.ToString())
{
MessageBox.Show("恭喜你,小朋友!回答正确!");
right++;
Count++; }
else
{
MessageBox.Show("回答错误,继续加油!小朋友");
Count++;
} textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
} private void button4_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("一共用时" + textBox5.Text + "秒");
Window1 win = new Window1();
win.ShowDialog();
} }
}
Window.xaml.cs代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes; namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
textBox1.Text = MainWindow.Count.ToString();
textBox2.Text = MainWindow.right.ToString();
textBox3.Text = ((MainWindow.right / (double)(MainWindow.Count)) * ).ToString() + "%";
}
}
}
二、测试




三、总结
在WPF里实现计算器程序跟在WinForm里差不多,就是有些控件的用法有点区别,还有就是没有时间控件,得自己写代码实现,然后就上网搜了搜,很庆幸写出来了。
在WPF里实现计算器软件的更多相关文章
- 计算器软件实现系列(六)windowform窗体+SQL+策略模式
一 整体概述 这个计算器软件的功能和以前的功能基本上一样,只不过是数据的保存形式发生了变化,,以前用的是txt文件保存,现在更正用SQL数据库,现在更改了以前的文件保存形式,是三层架构中数据层的更换, ...
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- WPF里的一些Effect特效
原文:WPF里的一些Effect特效 Blend的特效都在Microsoft.Expression.Media.Effects里,用之前添加一下引用. 可以在前台选中对象后直接点击Effect新建一种 ...
- 计算器软件实现系列(七)WPF+SQL+策略模式
一 整体概述 本次设计主要是在WPF的页面中实现的,属于表现层的更换,数据库部分用的还是数据库的封装,其中引用了策略模式 二 设计思路 1 在出题页面,进行试题的编辑,在编辑后会自动保存到数据库中 ...
- WPF学习开发客户端软件-任务助手(已上传源码)
本人纯属WPF新手,布局和WPF的开发水平相当欠缺,从个人来说,还是比较喜欢WPF的,有人说WPF是界面加上WINFORM,我不这样认为,WPF与WINFORM主要的不同在于数据绑定. 这个软件虽 ...
- revit二次开发wpf里button按钮无法实现事务
不能在revit提供的api外部使用事务,解决此方法, 1.把button里要实现的功能写到外部事件IExternalEventHandler中,注册外部事件,在button事件中.raise()使用 ...
- WPF里ItemsControl的分组实现 --listbox 实现分组
我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...
- adb导出安卓 把手机内存文件导入到电脑里 adb安装软件
记得先找对路劲adb shellls 最上面的ls: ./ 打头的没有权限.而下面的这些acct sdcard等 都有权限. 然后cd sdcardls 看下目录,发现gxm文件夹在sdcard下面. ...
- WPF里ItemsControl的分组实现
我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...
随机推荐
- [原创]升级Gerrit的commit-msg,检查git commit时必须填写开发任务编号TaskID
公司使用git+gerrit+jenkins进行持续集成实践,其中gerrit用来进行Code Review.另外我们自己研发了一套敏捷项目管理系统TPM(TeamPlus Management),用 ...
- iOS开发过程中易犯的小错误
addGestureRecognizer(_:) 一个手势对象只绑定一个view // 只有最后一个imgv有点击事件 let tap = UITapGestureRecognizer(target: ...
- Linux 定时清除日志 Log
一.原因 写这篇的原因是项目中log没有定时清除,服务器上项目是用脚本启动,log文件只会在启动时生成一次,这时,由于项目在不断运行中,导致log越来越大.如果删除log文件,还得把项目停掉在启动,这 ...
- JavaWeb总结(十四)
无脚本JSP表达式语言EL JSP页面中显示结果 jsp:useBean和jsp:getProperty两个元素冗长而笨拙 jsp:getProperty只支持对简单Bean属性的访问 public ...
- Hbase操作table常见方法示例
首先上我的输出类: /** * 功能:电池历史数据数据结构 * Created by liuhuichao on 2016/12/5. */ public class ResBatteryDataHi ...
- 【BZOJ1047】[HAOI2007]理想的正方形
[BZOJ1047][HAOI2007]理想的正方形 题面 bzoj 洛谷 题解 二维\(st\)表,代码是以前的 #include<iostream> #include<cstdi ...
- CF 1138 E. Museums Tour
E. Museums Tour 链接 分析: 按时间建出分层图,每个点形如(u,t),表示u在在t个时刻的点,tarjan缩点.每个强连通分量中的点都能经过,然后DAG上dp. 代码: #includ ...
- Django—— restful 设计风格
RESTful Api设计风格 协议:API 与用户的通信协议,总是使用 HTTPS 协议 域名:应该尽量将 API 部署在专用域名之下,如果确定 API 很简单,不会有进一步的扩展,可以考虑放在主域 ...
- JS ,substr、 substring、charAt方法的区别
JS 截取字符串substr 和 substring方法的区别,需要的朋友可以参考下,根据需要自行选择. substr 方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.subs ...
- (转)为什么所有浏览器的user-agent都是Mozilla
最早的时候有一个浏览器叫NCSA Mosaic,把自己标称为NCSA_Mosaic/2.0 (Windows 3.1),它支持文字显示的同时还支持图片,于是Web开始好玩起来. 然后出现了一个新的网页 ...