前言
对于有编程语言的而言很容易看懂,(有基础的还会来看我?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();
}
}
}