WPF实现多运算符表达式计算器

WPF实现一个简单的多运算符表达式计算器

1.先看下效果图在这里插入图片描述

首先外围给了一个grid 把他分成了两行 第一行用来显示文本框给了一个低于第二行的高度 第二行用来存按钮 窗体的大小自己去调就好了 我这里给的是380x268

<Grid.RowDefinitions>
   <RowDefinition Height="0.7*"></RowDefinition>
   <RowDefinition></RowDefinition>
</Grid.RowDefinitions>

这是一个非常简单的布局 没有用到样式 头部是用了一个Border给一个圆弧实现的 代码如下

<Border Margin="5" Padding="5" Background="White" BorderBrush="Black" BorderThickness="3,5,3,5" CornerRadius="10" VerticalAlignment="Top" Height="130" Width="240">
      <TextBlock Name="ShowNumText" Height="100" Width="auto" VerticalAlignment="Top" FontSize="50" HorizontalAlignment="Right" >

      </TextBlock>
</Border>

接下来就是按键部分了 用了一个UniformGrid布局 类似于一个表格 给4行4列 最后再往里面添加按钮实现的 分别给每个按钮设置背景颜色,字体颜色以及单击事件(一共4类单击事件 分别是数字的、运算符的、等于号、还有一个清空C)

<UniformGrid Grid.Row="1" Rows="4" Columns="4" Height="200" Width="250">
      <Button Name="btn1" Content="1" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn2" Content="2" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn3" Content="3" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnD" Content="÷" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btn4" Content="4" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn5" Content="5" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn6" Content="6" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnX" Content="X" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btn7" Content="7" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn8" Content="8" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn9" Content="9" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnM" Content="-" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btnC" Content="C" FontSize="35" Background="Black" Foreground="White" Click="btnC_Click"/>
      <Button Name="btn0" Content="0" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnE" Content="+" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btnP" Content="=" FontSize="35" Background="Black" Foreground="White" Click="btnP_Click"/>
</UniformGrid>

这样我们的xaml样式就写完了,接下来就是后端了

上面的代码我们看到我们已经定义了单击事件 首先找到数字的单击事件写上以下代码

var v = sender as Button;
      switch (v.Content.ToString())
      {
        case "1":
          ShowNumText.Text += 1;
          break;
        case "2":
          ShowNumText.Text += 2;
          break;
        case "3":
          ShowNumText.Text += 3;
          break;
        case "4":
          ShowNumText.Text += 4;
          break;
        case "5":
          ShowNumText.Text += 5;
          break;
        case "6":
          ShowNumText.Text += 6;
          break;
        case "7":
          ShowNumText.Text += 7;
          break;
        case "8":
          ShowNumText.Text += 8;
          break;
        case "9":
          ShowNumText.Text += 9;
          break;
        case "0":
          ShowNumText.Text += 0;
          break;

意思就是判断一下用户点击的是哪一个数字 然后把他加到文本框内

接下来就是运算符的单击事件 同理数字的

if (ShowNumText.Text == "")
        return;
      var v1 = sender as Button;
      switch (v1.Content.ToString())
      {
        case "+":
          ShowNumText.Text += "+";
          break;
        case "-":
          ShowNumText.Text += "-";
          break;
        case "X":
          ShowNumText.Text += "X";
          break;
        case "÷":
          ShowNumText.Text += "÷";
          break;
} 

然后导入命名空间

using System.Data;

这个命名空间里面有一个超级好用的方法Compute
Compute的意思简单来说就是放入一个string类型的带有表达式的字符串计算,
找到等于号的事件 加入代码

try
    {
        string str= ShowNumText.Text.Replace('X', '*');
        str= str.Replace('÷', '/');
        DataTable dt = new DataTable();
        string v = dt.Compute(str, null).ToString();
        ShowNumText.Text = v.ToString();
      }
      catch { ShowNumText.Text = ""; }

用Replace方法过滤掉 x和÷
因为Compute 是不接收数学的乘和除的

最后在清空事件里加入一个ShowNumText.Text = "";//清空文本框
这样我们的计算器就写完了!!!

前台xaml

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication1"
    mc:Ignorable="d"
    Title="计算机" Height="380" Width="268">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="0.7*"></RowDefinition>
      <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Border Margin="5" Padding="5" Background="White" BorderBrush="Black" BorderThickness="3,5,3,5" CornerRadius="10" VerticalAlignment="Top" Height="130" Width="240">
      <TextBlock Name="ShowNumText" Height="100" Width="auto" VerticalAlignment="Top" FontSize="50" HorizontalAlignment="Right" >

      </TextBlock>
    </Border>
    <UniformGrid Grid.Row="1" Rows="4" Columns="4" Height="200" Width="250">
      <Button Name="btn1" Content="1" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn2" Content="2" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn3" Content="3" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnD" Content="÷" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btn4" Content="4" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn5" Content="5" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn6" Content="6" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnX" Content="X" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btn7" Content="7" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn8" Content="8" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btn9" Content="9" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnM" Content="-" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btnC" Content="C" FontSize="35" Background="Black" Foreground="White" Click="btnC_Click"/>
      <Button Name="btn0" Content="0" FontSize="35" Background="Black" Foreground="White" Click="btn1_Click_1"/>
      <Button Name="btnE" Content="+" FontSize="35" Background="Black" Foreground="White" Click="btnD_Click"/>
      <Button Name="btnP" Content="=" FontSize="35" Background="Black" Foreground="White" Click="btnP_Click"/>
    </UniformGrid>
  </Grid>
</Window>

后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.Data;
namespace WpfApplication1
{
  /// <summary>
  /// MainWindow.xaml 的交互逻辑
  /// </summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();

    }
    private void btn1_Click_1(object sender, RoutedEventArgs e)//0-9绑定同一个事件
    {
      var v = sender as Button;
      switch (v.Content.ToString())
      {
        case "1":
          ShowNumText.Text += 1;
          break;
        case "2":
          ShowNumText.Text += 2;
          break;
        case "3":
          ShowNumText.Text += 3;
          break;
        case "4":
          ShowNumText.Text += 4;
          break;
        case "5":
          ShowNumText.Text += 5;
          break;
        case "6":
          ShowNumText.Text += 6;
          break;
        case "7":
          ShowNumText.Text += 7;
          break;
        case "8":
          ShowNumText.Text += 8;
          break;
        case "9":
          ShowNumText.Text += 9;
          break;
        case "0":
          ShowNumText.Text += 0;
          break;
      }
    }
    private void btnD_Click(object sender, RoutedEventArgs e)//运算符也绑定同一个事件
    {
      if (ShowNumText.Text == "")
        return;
      var v1 = sender as Button;
      switch (v1.Content.ToString())
      {
        case "+":
          ShowNumText.Text += "+";
          break;
        case "-":
          ShowNumText.Text += "-";
          break;
        case "X":
          ShowNumText.Text += "X";
          break;
        case "÷":
          ShowNumText.Text += "÷";
          break;
      }
    }
    private void btnP_Click(object sender, RoutedEventArgs e)
    {
      try
      {
        string str= ShowNumText.Text.Replace('X', '*');
        str= str.Replace('÷', '/');
        DataTable dt = new DataTable();
        string v = dt.Compute(str, null).ToString();
        ShowNumText.Text = v.ToString();
      }
      catch { ShowNumText.Text = ""; }
    }
    private void btnC_Click(object sender, RoutedEventArgs e)
    {
      ShowNumText.Text = "";//清空文本框
    }
  }
}

感谢你的观看!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用WPF窗口程序设计简单计算器

    本文中设计的计算器仅支持单次双目运算,可连续计算. 实验要求: 1.在wpf项目中编程实现一个简单计算器,具体要求如下: 1)实现+,-,*,/运算 2)可以连续进行计算. 效果如图: *该程序中数字通过点击对应按钮输入,运算符包含四种常用运算,除此之外还有退格以及清空操作,输入以及运算结果在上方文本框内显示 1.首先,该程序中只涉及单次运算,所以我们可以在隐藏文件里声明两个全局变量来相应的保存operation前后两个数(字符串). string num1 = null; //运算符之前的数

  • WPF实现多运算符表达式计算器

    WPF实现一个简单的多运算符表达式计算器 1.先看下效果图在这里插入图片描述 首先外围给了一个grid 把他分成了两行 第一行用来显示文本框给了一个低于第二行的高度 第二行用来存按钮 窗体的大小自己去调就好了 我这里给的是380x268 <Grid.RowDefinitions> <RowDefinition Height="0.7*"></RowDefinition> <RowDefinition></RowDefinition&

  • Java实现简单的表达式计算器功能示例

    本文实例讲述了Java实现简单的表达式计算器功能.分享给大家供大家参考,具体如下: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔.没有非法表达式.当一行中只有0时输入结束,相应的结果不要输出. Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位. Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 S

  • js表达式计算器代码

    效果图: 代码: // [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 您可能感兴趣的文章: JS实现简单的二元方程计算器功能示例 JS求解三元一次方程组值的方法 javascript写的简单的计算器,内容很多,方法实用,推荐 用JS写的简单的计算器实现代码 js实现简单计算器 网页计算器 一个JS计算器 js网页版计算器的简单实现 纯javascript代码实现计算器功能(三种方法) js的表单操作 简单计算器 javascript简单计算器 可美化 js实现模拟计算器退格键删除文

  • 浅析JS中常用类型转换及运算符表达式

    JS中的常用类型转换(一般用强制转换): 1.强制转为整数:parseInt:写法:x = parseInt(x); 2.强制转换位小为:parseFloat:写法:x = parseFloat(x); 3.检测类型:x = parseInt(x);       alert(typeof(true)); JS中常用的运算符表达式: 1.逻辑运算符(布尔型):&& 并 :|| 或 :! 非 : 2.比较运算符:==(等于) :!=(不等于) : > :< :>=(大于等于)

  • C#五类运算符使用表达式树进行操作

    在 C# 中,算术运算符,有以下类型 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 这些运算符根据参数的多少,可以分作一元运算符.二元运算符.三元运算符.本文将围绕这些运算符,演示如何使用表达式树进行操作. 对于一元运算符和二元运算符的 Expression 的子类型如下: UnaryExpression; //一元运算表达式 BinaryExpression; //二元运算表达式 一,算术运算符 运算符 描述 + 把两个操作数相加 - 从第一个操作数中减去第二个操作数

  • C语言运算符优先级列表(超详细)

    每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

  • Swift教程之基本运算符详解

    运算符是一种特定的符号或表达式,用来检验.修改或合并变量.例如,用求和运算符+可以对两个数字进行求和(如let i = 1 + 2):稍微复杂一点的例子有逻辑与操作符&& (如if enteredDoorCode && passedRetinaScan) ,自增长运算符 ++i (这是i=i+1的简写方式) Swift支持C标准库中的大多数运算符并提升了各自的兼容性,从而可以排除常见的编码错误.赋值操作符 (=)不会返回一个值,这样可以防止你因粗心将赋值运算符 (=)写成

  • python三元运算符实现方法

    这是今天在温习lambda表达式的时候想到的问题,众所周知C系列语言中的 三元运算符(?:)是一个非常好用的语句, 关于C中的三元运算符 表达式1?表达式2:表达式3 那么在python应该如何实现呢,请看下面例子: 答案是:X = (表达式1)and 表达式2(真值返回)or 表达式3(假值返回) 举个例子: 复制代码 代码如下: def main():    y = 5    x = (y > 5) and 2 or 4    print x    pass 这段代码的是意思的输出是4,可以

  • javascript运算符语法全面概述

    前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始终都遵循着一些固定语法,只有了解并掌握这些内容,才能正确使用运算符.本文将主要介绍javascript运算符的语法概述 操作数个数 javascript的运算符总共有46个,如果根据其操作数的个数进行分类,则大多数是二元运算符(binary operator),它们的操作数都是两个,它们将两个表达式合并成复杂表达式 1 + 2; true || false; javas

  • Javascript核心读书有感之表达式和运算符

    表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果.程序中常用量是最简单的一类表达式就是变量.变量名也是一种简单的表达式,它的值就是赋值给变量的值. 复杂的表达式是由简单的表达式组成的.比如数组访问表达式是由一个表示数组的表达式,方括号.一个整数表达式构成.它们所组成新的表达式运算结果是该数组特定位置的元素值.同样的函 数调用表达式由一个表示函数对象的表达式和0个多个参数表达式构成.将简单表达式组成复杂表达式最常用的方法就是运算符. 本章(本文)将讲解所有j

随机推荐