WPF TextBox限制只能输入数字的两种方法

文本框中只能输入数字,一个常见的功能喽,今天就来看看如何实现它~

下面就看看代码

思路都写在xaml里面了,

MainWindow.xaml:

<Window x:Class="wpfcore.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:wpfcore" xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"mc:Ignorable="d"Background="#2D2D30"SnapsToDevicePixels="True"FontSize="18"UseLayoutRounding="True"Title="MainWindow" Width="820" Height="340"><StackPanel><!--第一种方法,直接设置禁用输入法,并添加PreviewTextInput事件,如果不满足条件,就禁止输入--><TextBox InputMethod.IsInputMethodEnabled="False" PreviewTextInput="TextBox_PreviewTextInput" Margin="10"/><!--第二种方法,写一个附加属性,在属性改变时,给textbox添加上相应事件,这个写完后,复用时就方便喽--><TextBox local:TextBoxAttachedProperties.IsOnlyNumber="true" Margin="10"/></StackPanel>
</Window>

MainWindow.cs:

using System.Text.RegularExpressions;
using System.Windows;namespace wpfcore
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = this;}private void TextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e){e.Handled = new Regex("[^0-9]+").IsMatch(e.Text);}}}

第二种方法:

新建一个TextBoxAttachedProperties.cs文件,定义附加属性:

using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;namespace wpfcore
{public class TextBoxAttachedProperties{public static bool GetIsOnlyNumber(DependencyObject obj){return (bool)obj.GetValue(IsOnlyNumberProperty);}public static void SetIsOnlyNumber(DependencyObject obj, bool value){obj.SetValue(IsOnlyNumberProperty, value);}public static readonly DependencyProperty IsOnlyNumberProperty =DependencyProperty.RegisterAttached("IsOnlyNumber", typeof(bool), typeof(TextBox), new PropertyMetadata(false,(s, e) =>{if (s is TextBox textBox){textBox.SetValue(InputMethod.IsInputMethodEnabledProperty, !(bool)e.NewValue);textBox.PreviewTextInput -= TxtInput;if (!(bool)e.NewValue){textBox.PreviewTextInput += TxtInput;}}}));private static void TxtInput(object sender, System.Windows.Input.TextCompositionEventArgs e){e.Handled = new Regex("[^0-9]+").IsMatch(e.Text);}}
}

ok,结束喽

如果喜欢,点个赞呗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/354274.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

centos安装etcd

方法1&#xff1a;默认安装&#xff08;不建议&#xff09; 运行命令 yum install etcd 即可&#xff0c;只是安装的etcd版本较低&#xff0c;一般是 etcd-3.3.11&#xff0c;如下图 手动开启etcd&#xff0c;可以看到etcd服务已经开启来了&#xff0c;如下图 特别注意&#x…

llama_index中query_engine的response_mode详解

文章目录 0. 前言1. ResponseMode: tree_summarize &#xff08;总结摘要-最优&#xff09;2. ResponseMode: generation3. ResponseMode: no_text4. ResponseMode: simple_summarize &#xff08;最省token&#xff09;5. ResponseMode: refine &#xff08;基于关键词询问-最…

遇见未来,降低职场焦虑——中国人民大学与加拿大女王大学金融硕士来助力

身在职场的你有感到一丝丝的焦虑吗&#xff1f;偶尔的小焦虑可以作为我们工作中的动力&#xff0c;时刻提醒我们保持奋进。预见未来才能遇见未来&#xff0c;随着社会经济不断发展&#xff0c;没有什么是一成不变的。处于职场上升期的我们更要懂得未雨绸缪&#xff0c;增加自身…

多种工厂模式的运用

文章目录 多种工厂模式的运用一、简单工厂模式&#xff08;非23种设计模式&#xff09;1.1 结构2.2 实现2.2.1 简单工厂类图2.2.2 代码2.2.3 优缺点 二、静态工厂模式&#xff08;非23种设计模式&#xff09;3.1 代码 三、工厂模式3.1 结构 3.2 实现3.2.1 工厂模式类图3.2.2 代…

EBU6304 Software Engineering 知识点总结_5 项目管理_上

Software architecture 功能需求和软件架构关系紧密&#xff0c;非功能需求是软件架构的选择结果&#xff08;好的架构运行效率高之类的&#xff09;。可以以表格或图的形式&#xff0c;比如UML图。 设计难以更改。敏捷开发的早期阶段就是设计系统架构。 好处&#xff1a; …

OGL(教程16)——基础贴图映射

原文地址&#xff1a;http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.html 背景知识&#xff1a; 贴图的映射的意思是应用任何类型的图到3D模型的多个面上。这个图叫做纹理&#xff0c;它可以是任何东西。如砖头、树叶、贫瘠的土地&#xff0c;使用这些贴图增加场景的…

【UE4】官方课程笔记

【UE4】官方课程笔记 Blueprint Project Config project-specific settings Content content folder Intermidiate 可删除&#xff0c;暂时性文件 Saved 一旦删除不可恢复的文件 DDC DRIVE DATA CACHE C Project .sln文件 可删除&#xff0c;再次打开时recreated Sourc…

shader graph_在Shader Graph中使用表面梯度框架进行法线贴图合成

shader graph A recent Unity Labs paper introduces a new framework for blending normal maps that is easy and intuitive for both technical artists and graphics engineers. This approach overcomes several limitations of traditional methods.

OpenGL学习笔记(四)-光照-材质-光照贴图

参考网址&#xff1a;LearnOpenGL 中文版 哔哩哔哩教程 第二章 光照 2.1 颜色 现实生活中人眼看到某一物体的颜色&#xff0c;是它所反射的颜色。如将白光照在红色的玩具上&#xff0c;玩具会吸收白光中除了红色以外的所有子颜色&#xff0c;不被吸收的红色光被反射到我们的…

三维建模贴图技巧

作者&#xff1a;关宇 #一、概述 整个三维项目中建模制作为核心环节&#xff0c;决定了整个项目的框架基础。在制作的时候参考数据尤为重要决定了模型的精度。 一个完整的三维模型包括白模和贴图&#xff0c;白模决定了模型的外形结构&#xff0c;而贴图赋予色彩和细节。 个人…

提升树叶渲染性能

树的渲染的大部分消耗都是花在树叶上&#xff0c;为了是树叶看起来很茂密&#xff0c;美术一般会加很多叶子的三角形&#xff0c;但是三角形太多的话会让vs压力很大&#xff0c;因为树叶的动画都是在vs里完成的&#xff0c;因此大多游戏都采用的是Leaf Card也就是Billboard Lea…

【Unity Shader】树叶晃动效果原理及实现

1 树叶晃动原理 在模型空间下&#xff0c;对顶点进行X轴和Y轴上的偏移。 1.1 方法 通过计算顶点与Y轴单位向量的点积求得stage1。通过计算顶点与X轴单位向量的点积&#xff0c;加上时间分量_Time.y&#xff0c;求其正弦值stage2。将stage1/stage2与向量(0.001, 0, 0.001)相乘…

blender 2.8制作面片树叶的shading node设置

1. 创建Pricipled BSDF材质&#xff0c;并设置材质Settings的Blend Mode为Alpha Blend模式! 2. 在shading窗口内设置节点&#xff1a; 添加下列节点 Texture Coordinate Mapping Image Texture Image Texture Transparent BSDF Principled BSDF Mix Shader Material Output…

【UE4 Material 101学习笔记】 :Lec08/10/11/12 视差贴图的应用/布料着色/体积冰效果/树叶摇动

Lec08 视差贴图 原理 LearnOpenGL视差贴图 1. 使用高度图偏移UV 未使用高度贴图偏移UV时 使用之后&#xff0c;表面不平坦产生的阴影会更为明显一些。 当角度较大时&#xff0c;失真比较明显。 2. 视差遮蔽映射&#xff08;Parallax Occlusion Mapping&#xff09; 可弥…

UE风格化Day19-树叶材质

材质蓝图的基础技巧 补充一些材质蓝图的基础技巧&#xff0c;虽然比较基础&#xff0c;但是刚开始学的时候完全没有教程专门提到这个&#xff1a; 材质的管理一般分为&#xff1a;材质函数、材质、材质实例 首先网格体一般挂的材质就是用材质实例&#xff0c;当然也可以直接挂…

Quixel megascans模型材质贴图合集包

Quixel megascans是一个在线高分辨率扫描模型和贴图库&#xff0c;一致的PBR校准的表面&#xff0c;植被&#xff0c;和三维扫描模型&#xff0c;还包括用于管理的桌面应用、混合和输出你的扫描数据的程序。它的产品已经与游戏和电影工作室合作。 quixel megascans可以帮助您创…

自动化测试Junit

目录 Junit5注解TestDisabledBeforeAll、AfterAll、BeforeEach、AfterEach 参数化单参数多参数CSV获取参数方法获取参数 测试用例执行顺序断言 assert断言相等断言不相等断言为空断言不为空 测试套件 自动化测试项目1. 熟悉项目2. 针对核心流程设计手工测试用例3. 将手工测试用…

解释PBR纹理贴图(texture-maps)

纹理贴图&#xff0c;不管你是学习sp绘制纹理&#xff0c;还是利用渲染器创造艺术作品&#xff0c;接触到PBR流程&#xff0c;总要面对各种贴图。我在学习的时候&#xff0c;有时候搞得懂&#xff0c;有时候糊里糊涂&#xff0c;我想还是要做个笔记的&#xff0c;好记性不如烂笔…

PBR贴图基础知识

PBR贴图基础知识 一&#xff0c;基础知识二&#xff0c;PBR贴图类型传统次世代方式PBR次世代方式1&#xff0c;金属度粗糙度流程---Base ColorMetallicRoughness2&#xff0c;反射度光滑度流程---Diffuse/AlbedospecularGlossiness/Smoothness3&#xff0c;通用贴图类型法线贴图…

UE4 Material 101学习笔记——08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶

UE4 Material 101学习笔记——08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶 Lec08 凹凸和视差贴图 Bump Offset and Parallax Occlusion MappingLec09 纹理压缩与设置 Texture Compression and SettingsLec10 布料着色器 Cloth Shading10.1 了解布料10.2 布料shader Le…