一、具体代码

类代码:

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里实现计算器软件的更多相关文章

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

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

  2. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  3. WPF里的一些Effect特效

    原文:WPF里的一些Effect特效 Blend的特效都在Microsoft.Expression.Media.Effects里,用之前添加一下引用. 可以在前台选中对象后直接点击Effect新建一种 ...

  4. 计算器软件实现系列(七)WPF+SQL+策略模式

    一  整体概述 本次设计主要是在WPF的页面中实现的,属于表现层的更换,数据库部分用的还是数据库的封装,其中引用了策略模式 二  设计思路 1 在出题页面,进行试题的编辑,在编辑后会自动保存到数据库中 ...

  5. WPF学习开发客户端软件-任务助手(已上传源码)

    本人纯属WPF新手,布局和WPF的开发水平相当欠缺,从个人来说,还是比较喜欢WPF的,有人说WPF是界面加上WINFORM,我不这样认为,WPF与WINFORM主要的不同在于数据绑定.   这个软件虽 ...

  6. revit二次开发wpf里button按钮无法实现事务

    不能在revit提供的api外部使用事务,解决此方法, 1.把button里要实现的功能写到外部事件IExternalEventHandler中,注册外部事件,在button事件中.raise()使用 ...

  7. WPF里ItemsControl的分组实现 --listbox 实现分组

    我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...

  8. adb导出安卓 把手机内存文件导入到电脑里 adb安装软件

    记得先找对路劲adb shellls 最上面的ls: ./ 打头的没有权限.而下面的这些acct sdcard等 都有权限. 然后cd sdcardls 看下目录,发现gxm文件夹在sdcard下面. ...

  9. WPF里ItemsControl的分组实现

    我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...

随机推荐

  1. The Ribbon Tab with id: "Ribbon.Read" has not been made available for this page or does not exist.

    The Ribbon Tab with id: "Ribbon.Read" has not been made available for this page or does no ...

  2. ABAP-DBC录屏

    *&---------------------------------------------------------------------**& ZXXL_MM02_01*& ...

  3. Kafka使用jmxtrans+influxdb+grafana监控JMX指标

    最近在搞Kafka集群监控,之前也是看了网上的很多资料.之所以使用jmxtrans+influxdb+grafana是因为界面酷炫,可以定制化,缺点是不能操作Kafka集群,可能需要配合Kafka M ...

  4. WPF-学习笔记 动态修改控件Margin的值

    原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...

  5. 【转载】用纯粹的C++编写COM组件

    原文:http://blog.csdn.net/ghj1976/article/details/3441 下载本文代码 本文提供一个完全用C++实现的进程内(DLL)COM服务器,不要ATL或MFC提 ...

  6. AGC 018 F - Two Trees

    F - Two Trees 链接 题意: 给定两棵都是N个节点的有根树,节点均从1~N标号.给每个标号定一个权值(类似一号点的权值是x,那么两棵树中1号点的权值都是x),使在两棵树满足以任意节点为根的 ...

  7. 一个本地DNS解析和mysql授权导致的Mysq连接失败问题(Access denied for user 'loan'@'kfcsdb1' (using password: YES))

    web:/home/web/ -u loan -p loan Enter password: ERROR 1045 (28000): Access denied for user 'loan'@'kf ...

  8. P3164 [CQOI2014]和谐矩阵

    P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O( ...

  9. Docker系列之CentOS7安装Docker(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 一.瞎扯淡(只讲有用的) 感兴趣的同学可以上网搜索一下docker具体的介绍.我这边主要介绍偏实战的内容,不喜勿喷,有问题也请指出 ...

  10. async/await工作机制探究--NodeJS

    ES6中的async/await让Promise变得更加简便,通常await处理的链式Promise会包裹在函数中,返回结果仍然是一个Promise对象. 但是当await直接处理链式Promise时 ...