WPF计算

设计思路:

用WPF窗体设计,在第一个数和第二个数的文本框中输入数值,单击录题按钮,数值保存在n1,n2文档中,把要做的题都保存完后,单击开始按钮,开始做题,每做完一道题,按Enter键,进入下一题,同时提示回答是否正确。如果在时间内做完题就单击结束按钮,弹出对话框“答题结束” 总计,正确的个数及正确率显示出来。

MainWindow.xaml设计为:

代码为:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Windows;
  6 using System.Windows.Controls;
  7 using System.Windows.Data;
  8 using System.Windows.Documents;
  9 using System.Windows.Input;
 10 using System.Windows.Media;
 11 using System.Windows.Media.Imaging;
 12 using System.Windows.Navigation;
 13 using System.Windows.Shapes;
 14 using System.IO;
 15
 16
 17
 18 namespace xiaoshitou
 19 {
 20     /// <summary>
 21     /// MainWindow.xaml 的交互逻辑
 22     /// </summary>
 23     public partial class MainWindow : Window
 24     {
 25         public MainWindow()
 26         {
 27             InitializeComponent();
 28         }
 29         public static int Count = 0;//总计的个数
 30         public static int right = 0;//正确的个数
 31         int n = 0;
 32         private void button1_Click(object sender, RoutedEventArgs e)
 33         {
 34             label4.Content = "+";
 35
 36         }
 37
 38         private void button2_Click(object sender, RoutedEventArgs e)
 39         {
 40             label4.Content = "-";
 41
 42         }
 43
 44         private void button3_Click(object sender, RoutedEventArgs e)
 45         {
 46             label4.Content = "-";
 47             ;
 48         }
 49
 50         private void button4_Click(object sender, RoutedEventArgs e)
 51         {
 52             label4.Content = "-";
 53
 54         }
 55
 56         private void button5_Click(object sender, RoutedEventArgs e)
 57         {
 58
 59             StreamWriter n1 = File.AppendText("n1.txt");//第一个数存入第一文档
 60             n1.WriteLine(textBox1.Text);
 61             n1.Close();
 62             StreamWriter n2 = File.AppendText("n2.txt");//第二个数存入第二个文档
 63             n2.WriteLine(label4.Content);
 64             n2.Close();
 65             StreamWriter n3 = File.AppendText("n3.txt");//结果存入第三个文档
 66             n3.WriteLine(textBox2.Text);
 67             n3.Close();
 68             textBox1.Clear();
 69             textBox2.Clear();
 70             textBox3.Clear();
 71             MessageBox.Show("录题成功");
 72         }
 73
 74         private void button6_Click(object sender, RoutedEventArgs e)
 75         {
 76
 77             string[] n1 = new string[100];
 78             n1 = File.ReadAllLines("n1.txt");//数值一的文档
 79             textBox1.Text = n1[n];
 80             string[] n2 = new string[100];
 81             n2 = File.ReadAllLines("n2.txt");
 82             label4.Content = n2[n];
 83             string[] n3 = new string[100];
 84             n3 = File.ReadAllLines("n3.txt");
 85             textBox2.Text = n3[n];
 86             n++;
 87         }
 88
 89         private void button7_Click(object sender, RoutedEventArgs e)
 90         {            textBox3.IsEnabled = false;
 91             MessageBox.Show("运算结束!");
 92             textBox4.Text = Count.ToString();//题目总数
 93             textBox5.Text =right.ToString();//正确的个数
 94             textBox6.Text = ((right / (double)(Count)) * 100).ToString() + "%";//正确率
 95         }
 96
 97
 98
 99         private void textBox3_KeyDown(object sender, KeyEventArgs e)
100         {
101             int a = int.Parse(textBox1.Text);
102             int b = int.Parse(textBox2.Text);
103             Char c = Convert.ToChar(label4.Content);
104             Class1 con = new Class1();
105             con.js(a, b, c);
106             if (e.Key == Key.Enter)
107             {
108                 if (con.y1 == int.Parse(textBox3.Text))
109                 {
110                     MessageBox.Show("回答正确!下一题请按开始按钮!");
111                     right++;
112                     Count++;
113                 }
114
115                 else
116                 {
117
118                     MessageBox.Show("回答错误!下一题请按开始按钮!");
119                     Count++;
120
121                 }
122                 //清空
123                 textBox3.Clear();
124                 textBox1.Clear();
125                 textBox2.Clear();
126
127             }
128         }
129     }
130 }

Class.cs代码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 namespace xiaoshitou
 7 {
 8     class Class1
 9     {
10         public int result;
11         public int y1
12         {
13             get
14             {
15                 return result;
16             }
17         }
18
19         public int js(int n1, int n2, char mark)
20         {
21             if (mark == ‘+‘)
22             {
23                 return result = n1 + n2;
24             }
25             else if (mark == ‘-‘)
26             {
27                 return result = n1 - n2;
28             }
29             else if (mark == ‘*‘)
30             {
31                 return result = n1 * n2;
32             }
33             else if (mark == ‘/‘)
34             {
35                 return result = n1 / n2;
36             }
37             return result;
38         }
39     }
40 }

运行过程的各部分显示为以下图片:

时间: 2024-08-07 03:45:31

WPF计算的相关文章

C#/WPF 计算字串的真实长度,调整控件的宽度

下面函数是经常用到的计算字串长度的方法: private double MeasureTextWidth(String str, string fontName, double fontsize, double width)        {             double width = -1;                 try            {                System.Drawing.Graphics graphics = System.Drawing

WPF 3D:MeshGeometry3D的定义和光照

原文 WPF 3D:MeshGeometry3D的定义和光照 由于WPF计算光照会根据整个平面的方向向量,所以如果在不同面上使用同一个点可能会达到不同的光照效果.让我们用不同的定义Mesh的方法来演示这个问题. 首先要定义两个简单的相交面,为方便定义,整个图形的主视图可以参考下图: 第一个方法就是用最简单的最笨的方法,一次性定义所有的点,这样两个面四个三角形一共12个点,TriangleIndices是从0到11. 如下代码: <MeshGeometry3D Positions="-1 0

【WPF学习】第三十九章 理解形状

在WPF用户界面中,绘制2D图形内容的最简单方法是使用形状(shape)——专门用于表示简单的直线.椭圆.矩形以及多变形的一些类.从技术角度看,形状就是所谓的绘图图元(primitive).可组合这些基本元素来创建更复杂的图形. 关于WPF中形状的重要细节是,它们都继承自FrameworkElement类.因此,形状是元素.这样会带来许多重要的结果: 形状绘制自身.不需要管理无效的情况和绘图过程.例如,当移动内容.改变窗口尺寸或改变形状属性时,不需要手动重新绘制形状. 使用与其他元素相同的方式组

计算照片的面积(WPF篇)

昨天,老周突发其想地给大伙伴们说了一下UWP应用中计算照片面积的玩法,而且老周也表示会提供WPF版本的示例.所以,今天就给大伙们补上吧. WPF是集成在.net框架中,属于.net的一部分,千万不要跟我说你学.net不学WPF,那是不对的,包括ASP.NET.WCF.WF等都是.net框架的一部分,它们在本质上并没有脱离.net. 废话少扯,扯了也没人听,咱们说正题吧. WPF库中与UWP的不太一样,图像解码编码API似乎不像UWP中那么强大,大概是因为桌面程序可以调用Win32 API和COM

WPF实现强大的动态公式计算

数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题. 1.VS2012新建一个WPF应用程序WpfApp_DynCalc,并添加一个类DynCalc.cs,如下图: 2.编辑MainWindow.xaml,代码如下: 1 <Window x:Class="WpfApp_DynCalc.MainWindow" 2 xmlns="http://schemas.microsoft.

wpf 导入Excel 未在本地计算机上注册&quot;Microsoft.Ace.OleDb.12.0&quot;提供程序.

最近在做 项目,发现 导入Excel  未在本地计算机上注册"Microsoft.Ace.OleDb.12.0"提供程序. 有人说要装 原因在于你的office没有安装ACCESS组件 但是 实际上我 已经安装了 ACCESS组件还是有这个问题 解决方法 第一步 工程文件点击右键属性 第2步 如果是 64位系统, 点击 “生成” 把 目标平台 Any CPU 改成 x86

WPF 在绑定表达式添加计算

很多时候一些简单的使用绑定需要对绑定的源做处理就需要通过转换器,这样的代码写起来不好看 本文告诉大家通过一个简单的库可以实现在界面绑定的时候通过表达式不需要转换 首先通过 Nuget 安装 CalcBinding 库,注意 Nuget 的地址是 https://api.nuget.org/v3/index.json 如果没有找到这个库就请复制链接点击更新,再输入 CalcBinding 寻找 在使用这个库之前需要引用命名空间,打开 MainWindow.xaml 文件,添加命名空间 xmlns:

[WPF系列]-DataBinding 绑定计算表达式

        Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth, Converter={StaticResource MathConverter}, ConverterParameter=(@VALUE-100.0)}"   Width="{Binding ElementName=RootWindow, Path=ActualWidth, Converter={StaticResou

WPF 中的 loaded 事件和 Initialized 事件

在 WPF 中, 控件有 Loaded 和 Initialized 两种事件. 初始化和加载控件几乎同时发生, 因此这两个事件也几乎同时触发. 但是他们之间有微妙且重要的区别. 这些区别很容易让人误解. 这里介绍我们设计这些事件的背景. (不仅适用于 Control 类, 同样在通用类如 FrameworkElement 和 FrameworkContentElement 类也适用.) 下面是个小故事: Initialized 事件只说: 这个元素已经被构建出来,并且它的属性值都被设置好了,所以