• 在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 = ".	ext1.txt";
            public static int right = 0;
            public static int Count = 0;
            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 + "
    ";
                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(0, 0, 0,1);
                myTimer.Tick += new EventHandler(Timer_Tick);
                myTimer.Start();
                string[] m = new string[100];
                m = File.ReadAllLines("baocun1.txt");
                textBox1.Text = m[a];
                string[] n = new string[100];
                n = File.ReadAllLines("baocun2.txt");
                textBox2.Text = n[a];
                string[] v = new string[100];
                v = File.ReadAllLines("baocun3.txt");
                textBox3.Text = v[a];
                a++;
            }
    
            void Timer_Tick(object send, EventArgs e)  
            {
                t = t + 1;
                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)) * 100).ToString() + "%";
            }
        }
    }

    二、测试

    三、总结

        在WPF里实现计算器程序跟在WinForm里差不多,就是有些控件的用法有点区别,还有就是没有时间控件,得自己写代码实现,然后就上网搜了搜,很庆幸写出来了。

  • 相关阅读:
    Requests发送带cookies请求
    Python3 + requests + unittest接口测试
    「完结篇」网络爬虫+实时监控+推送微信
    「爬虫」从某网站爬取数据
    定时从某网站爬取压缩包
    如何转载文章...............
    数据库连接远程服务器报错
    记录常用的Java方法
    链接服务器 不同服务器查询,插入数据
    【学习笔记】树状数组
  • 原文地址:https://www.cnblogs.com/twinkle-0908/p/5073379.html
Copyright © 2020-2023  润新知