栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

WPF实现一个简单的多运算符表达式计算器,供大家参考,具体内容如下

1.先看下效果图

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


 
 

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


  
  
  

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


  

这样我们的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


 
 
  
  
 
 
  
  
  
 
 
  

后台代码

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
{
 /// 
 /// MainWindow.xaml 的交互逻辑
 /// 
 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 = "";//清空文本框
 }
 }
}

感谢你的观看!

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/121725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号