C# 基于WPF 计算器

前言

对于有编程语言的而言很容易看懂,(有基础的还会来看我?qwq)代码就在下面了 新建 

在vs里新建WPF应用后 CTRL C+ CTRL+V就行,还是不能用就私信解决 

要想熟练度写出 这这个计算器 就要掌握 Button 和 TextBox组件的使用 

WPF Button 按钮

Button - WPF .NET Framework | Microsoft Learn这个链接是微软官方撰写的 如果别人写的讲解TextBox是鱼 那么官方文档就 鱼竿

常用属性

Width="value" Height="value" 设置长宽高
Name设置按钮名称
Background设置按钮背景颜色
ClickMode设置按钮状态

事件

ClickMode="Hover"悬停更改状态
ClickMode="Press"按更改状态
ClickMode="Release"释放更改状态

实例

<Button Name="btn1" Background="Pink" 
        BorderBrush="Black" BorderThickness="1" 
        Click="OnClick1" ClickMode="Hover">
  ClickMe1
</Button>

<Button Name="btn2" Background="LightBlue" 
        BorderBrush="Black" BorderThickness="1" 
        Click="OnClick2" ClickMode="Press">
  ClickMe2
</Button>

<Button Name="btn3" 
        Click="OnClick3" ClickMode="Release">
  Reset
</Button>

//.cs
void OnClick1(object sender, RoutedEventArgs e)
{
    btn1.Background = Brushes.LightBlue;
}

void OnClick2(object sender, RoutedEventArgs e)
{
    btn2.Background = Brushes.Pink;
}

void OnClick3(object sender, RoutedEventArgs e)
{
    btn1.Background = Brushes.Pink;
    btn2.Background = Brushes.LightBlue;
}

WPF TextBox输入框

TextBox - WPF .NET Framework | Microsoft Learn 直接放官方文档

常用属性

SelectionBrush选定为文本颜色
BorderBrush边框颜色
fontsize文本大小
Foreground字体颜色

事件

TextChanged输入框发生变化时触发的事件

实例 TextBox 实现Enter事件

<Grid>
    <!--SelectionBrush 选定的文本的颜色-->
    <!--TextChanged 输入框发生变化时触发的事件-->
    <Label Width="100" Height="40" BorderThickness="1" BorderBrush="Black"
    Margin="0,0,0,120" VerticalContentAlignment="Center" FontSize="15"
   Name="label" Content="label" 
   />
    <TextBox Name="text" Width="200" Height="40"
             BorderBrush="Black" BorderThickness="1"
             Text="请输入" VerticalContentAlignment="Center"
             FontSize="20" FontFamily="楷体"
             FontWeight="Light" FontStyle="Oblique"
             Foreground="Gray" SelectionBrush="Pink"
             TextChanged="f1" 
             >
    </TextBox>
    <Button Width="200" Height="100"
            HorizontalAlignment="Right"
            Content="点击获取选中文本内容"
            Click="f2" />
</Grid>
 
 
 
CS后台代码
// 输入框内容变化事件
private void f1(object sender, TextChangedEventArgs e)
{
    label.Content = this.text.Text;
}

综合案例

Button 与 TextBox的 一个综合案例 可在TextBox输入 然后 通过按钮点击弹出

综合案例展示(图片)

综合案例展示(视频)

QQ录屏20240507215813

综合案例xaml代码

<Window x:Class="inputandbth.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:inputandbth"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Name="btn1" Width="60" Content="ID" HorizontalAlignment="Left" Margin="100,21,0,0" VerticalAlignment="Top" Click="Button_Click1"/>
        <Button Name="btn2" Width="60" Content="ID2" HorizontalAlignment="Left" Margin="200,21,0,0" VerticalAlignment="Top" Click="Button_Click2"/>
        <Button Name="btn3" Width="60" Content="ID3" HorizontalAlignment="Left" Margin="300,21,0,0" VerticalAlignment="Top" Click="Button_Click3"/>
        <Button Name="btn4" Width="60" Content="ID4" HorizontalAlignment="Left" Margin="400,21,0,0" VerticalAlignment="Top" Click="Button_Click4"/>
        <Button Name="btn5" Width="60" Content="ID5" HorizontalAlignment="Left" Margin="500,21,0,0" VerticalAlignment="Top" Click="Button_Click5"/>
        <TextBox Name="tab" HorizontalAlignment="Left" Margin="100,80,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" TextChanged="tab_TextChanged1"/>
        <TextBox Name="tab2" HorizontalAlignment="Left" Margin="100,100,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" TextChanged="tab_TextChanged2"/>
        <TextBox Name="tab3" HorizontalAlignment="Left" Margin="100,120,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" TextChanged="tab_TextChanged3"/>
        <TextBox Name="tab4" HorizontalAlignment="Left" Margin="100,140,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" TextChanged="tab_TextChanged4"/>
        <TextBox Name="tab5" HorizontalAlignment="Left" Margin="100,160,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" TextChanged="tab_TextChanged5"/>
        <Label Content="1." HorizontalAlignment="Left" Margin="21,80,0,0" VerticalAlignment="Top" Height="17" Width="74" FontSize="7" FlowDirection="RightToLeft"/>
        <Label Content="2." HorizontalAlignment="Left" Margin="21,100,0,0" VerticalAlignment="Top" Height="17" Width="74" FontSize="7" FlowDirection="RightToLeft"/>
        <Label Content="3." HorizontalAlignment="Left" Margin="21,120,0,0" VerticalAlignment="Top" Height="17" Width="74" FontSize="7" FlowDirection="RightToLeft"/>
        <Label Content="4." HorizontalAlignment="Left" Margin="21,140,0,0" VerticalAlignment="Top" Height="17" Width="74" FontSize="7" FlowDirection="RightToLeft"/>
        <Label Content="5." HorizontalAlignment="Left" Margin="21,160,0,0" VerticalAlignment="Top" Height="17" Width="74" FontSize="7" FlowDirection="RightToLeft"/>

    </Grid>
</Window>

综合案例cs代码

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.Windows;

namespace inputandbth
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    
    public partial class MainWindow : Window
    {
        string id1, id2, id3, id4, id5;
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click1(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(id1);
        }

        private void Button_Click2(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(id2);
        }

        private void Button_Click3(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(id3);
        }

        private void Button_Click4(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(id4);
        }

        private void Button_Click5(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(id5);
        }

        private void tab_TextChanged1(object sender, TextChangedEventArgs e)
        {
            id1 = this.tab.Text;
        }

        private void tab_TextChanged2(object sender, TextChangedEventArgs e)
        {
            id2 = this.tab2.Text;
        }

        private void tab_TextChanged3(object sender, TextChangedEventArgs e)
        {
            id3 = this.tab3.Text;  
        }

        private void tab_TextChanged4(object sender, TextChangedEventArgs e)
        {
            id4 = this.tab4 .Text;
        }

        private void tab_TextChanged5(object sender, TextChangedEventArgs e)
        {
            id5 = this.tab5.Text;   
        }
    }
}

最终案例

最终效果展示(图片)

最终效果展示(视频)

jisuanqi 2024-05-07 19-37-24

最终案例xaml代码

//XAML代码
<Window x:Class="jisuanq.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:jisuanq"
        mc:Ignorable="d"
        Title="jisuanqi" Height="450" Width="800">
    <Grid Height="438">
        
        <Button Name="B0" Content="0" Width="50" Height="20" HorizontalAlignment="Left" Margin="160,140,0,0" VerticalAlignment="Top" Click="B0_Click"/>
        <Button Name="B1" Content="1" Width="50" Height="20" HorizontalAlignment="Left" Margin="260,140,0,0" VerticalAlignment="Top" Click="B1_Click_1"/>
        <Button Name="B2" Content="2" Width="50" Height="20" HorizontalAlignment="Left" Margin="360,140,0,0" VerticalAlignment="Top" Click="B2_Click_1"/>
        <Button Name="B3" Content="3" Width="50" Height="20" HorizontalAlignment="Left" Margin="160,200,0,0" VerticalAlignment="Top" Click="B3_Click_1"/>
        <Button Name="B4" Content="4" Width="50" Height="20" HorizontalAlignment="Left" Margin="260,200,0,0" VerticalAlignment="Top" Click="B4_Click_1"/>
        <Button Name="B5" Content="5" Width="50" Height="20" HorizontalAlignment="Left" Margin="360,200,0,0" VerticalAlignment="Top" Click="B5_Click_1"/>
        <Button Name="B6" Content="6" Width="50" Height="20" HorizontalAlignment="Left" Margin="160,260,0,0" VerticalAlignment="Top" Click="B6_Click_1"/>
        <Button Name="B7" Content="7" Width="50" Height="20" HorizontalAlignment="Left" Margin="260,260,0,0" VerticalAlignment="Top" Click="B7_Click_1"/>
        <Button Name="B8" Content="8" Width="50" Height="20" HorizontalAlignment="Left" Margin="360,260,0,0" VerticalAlignment="Top" Click="B8_Click_1"/>
        <Button Name="B9" Content="9" Width="50" Height="20" HorizontalAlignment="Left" Margin="160,320,0,0" VerticalAlignment="Top" Click="B9_Click_1"/>
        <Button Name="Badd" Content="+" Width="50" Height="20" HorizontalAlignment="Left" Margin="460,140,0,0" VerticalAlignment="Top" Click="Badd_Click"/>
        <Button Name="Bjian" Content="-" Width="50" Height="20" HorizontalAlignment="Left" Margin="460,200,0,0" VerticalAlignment="Top" Click="Bjian_Click"/>
        <Button Name="Bcheng" Content="*" Width="50" Height="20" HorizontalAlignment="Left" Margin="460,320,0,0" VerticalAlignment="Top" Click="Bcheng_Click"/>
        <Button Name="Bchu" Content="/" Width="50" Height="20" HorizontalAlignment="Left" Margin="460,260,0,0" VerticalAlignment="Top" Click="Bchu_Click"/>
        <Button Name="Bqingchu" Content="AC" Width="50" Height="20" HorizontalAlignment="Left" Margin="260,320,0,0" VerticalAlignment="Top" Click="Bqingchu_Click"/>
        <Button Name="Bqiuyu" Content="%" Width="50" Height="20" HorizontalAlignment="Left" Margin="360,320,0,0" VerticalAlignment="Top" Click="Bqiuyu_Click"/>
        <Button Name="Binput" Content="=" Width="300" Height="20" HorizontalAlignment="Left" Margin="185,380,0,0" VerticalAlignment="Top" Click="Binput_Click"/>
        <TextBox Name="text" HorizontalAlignment="Left"  Margin="235,93,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="200" TextChanged="TextBox_TextChanged"/>


    </Grid>
</Window>

最终案例.CS代码

//CSd代码
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.Windows;

namespace jisuanq
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {   
        int algorithm = 0;
        int sum = 0;
        string stA;
        string stB;
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Binput_Click(object sender, RoutedEventArgs e)//  输出
        {
            if (algorithm == 1)//通过algorithm 来判断是否是加减乘除
            {//加法
                int len = stB.Length;
                string strC = this.text.Text.Substring(len);
                this.text.Text = (int.Parse(stA) + int.Parse(strC)).ToString();//.Pares 就是一个转换的方法具体可以自行搜索
            }
            else if (algorithm == 2)
            {//减法
                int len = stB.Length;
                string strC = this.text.Text.Substring(len);
                this.text.Text = (int.Parse(stA) - int.Parse(strC)).ToString();
            }
            else if (algorithm == 3)
            {//乘法
                int len = stB.Length;
                string strC = this.text.Text.Substring(len);
                this.text.Text = (int.Parse(stA) * int.Parse(strC)).ToString();
            }
            else if (algorithm == 4)
            {//除法
                int len = stB.Length;
                string strC = this.text.Text.Substring(len);
                this.text.Text = (int.Parse(stA) / int.Parse(strC)).ToString();
            }
            else if(algorithm == 5)
            {
                int len = stB.Length;
                string strC = this.text.Text.Substring(len);
                this.text.Text = (int.Parse(stA) % int.Parse(strC)).ToString();
            }
            else
            {
                B1110_Click();//这里在text里面不能直接调用 MessageBox 可能有更好的办法 我就用的比较笨的
            }
        }

        private void B1110_Click()
        {
            MessageBox.Show("错误");
        }

        private void B0_Click(object sender, RoutedEventArgs e)
        {
            this.text.Text += "0";
        }
        private void B1_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "1";
        }
        private void B2_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "2";
        }
        private void B3_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "3";
        }
        private void B4_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "4";
        }
        private void B5_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "5";
        }
        private void B6_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "6";
        }
        private void B7_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "7";
        }
        private void B8_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "8";
        }
        private void B9_Click_1(object sender, RoutedEventArgs e)
        {
            this.text.Text += "9";
        }

        private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            
        }

        private void Badd_Click(object sender, RoutedEventArgs e)//  加法
        {
            algorithm = 1;//按钮每点击一下 都对 alogorithm 进行设置 
            stA = this.text.Text;// 这里设计一点小思维 因为 符号不能参与运算所有
                                    //当点击时将 前部分 存储到 STA 后半部分存储到 B
            this.text.Text += "+";
            stB = this.text.Text;
        }

        private void Bjian_Click(object sender, RoutedEventArgs e)//减法
        {
            algorithm = 2;//按钮每点击一下 都对 alogorithm 进行设置 
            stA = this.text.Text;
            this.text.Text += "-";
            stB = this.text.Text;
        }
        private void Bcheng_Click(object sender, RoutedEventArgs e)//惩罚
        {
            algorithm = 3;//按钮每点击一下 都对 alogorithm 进行设置 
            stA = this.text.Text;
            this.text.Text += "*";
            stB = this.text.Text;
        }
        private void Bchu_Click(object sender, RoutedEventArgs e)//除法
        {
            algorithm = 4;//按钮每点击一下 都对 alogorithm 进行设置 
            stA = this.text.Text;
            this.text.Text += "/";
            stB = this.text.Text;
        }

        private void Bqiuyu_Click(object sender, RoutedEventArgs e)//求余
        {
            algorithm = 5;//按钮每点击一下 都对 alogorithm 进行设置 
            stA = this.text.Text;// 这里设计一点小思维 因为 符号不能参与运算所有
            //                      当点击时将 前部分 存储到 STA 后半部分存储到 B
            this.text.Text += "%";
            stB = this.text.Text;
        }

        private void Bqingchu_Click(object sender, RoutedEventArgs e)//清空
        {
            this.text.Clear();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值