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://www.mzph.cn/news/301159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

r.java没有生成_R.java 常见问题(R.java文件没有生成 )

1、选择菜单 Project >> Clean &#xff0c;前提是勾选上 Bulid Automatically(自动构建部署) &#xff0c; 点Clean后会重新构建项目&#xff0c;因为一般情况下&#xff0c;R.java文件在这个时候会重新更新生成一边&#xff0c;如果工程有错&#xff0c;就不会自动生成…

SmartPart事件

姑且把这样的一件事情叫做事件&#xff01; SmartPart是一个非常好的Sharepoint用户控件包装器&#xff08;kaneboy开发的包装控件也非常好用&#xff09;&#xff0c;我们知道&#xff0c;在WSS2.0/SPS2003平台上只有两种方法创建你自己的WebPart&#xff1a; 1、使用MS官方提…

国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !

▲数据汪特别推荐点击上图进入玩酷屋说到数学&#xff0c;我想起了13年一场轰动行业各界的“数学无用论”&#xff01;那时微博上有个话题叫做#让数学滚出高考#&#xff0c;超过7成网友都表示支持&#xff0c;这可怕的比例就能说明在中国由于数学差导致命运被洗牌的真不在少数……

NET问答:null != variable 和 variable != null 到底有什么区别?

咨询区 mr_georg&#xff1a;在 C# 中&#xff0c;下面的两种写法在执行效率上是否存在差异&#xff1f;if (null ! variable) ... if (variable ! null) ...因为最近我经常看到这种非自然的写法 null ! variable&#xff0c;这让我感到很好奇&#xff0c;因为我觉得第二种写法…

分清词类

要学好英语&#xff0c;分清词类至关重要&#xff0c;每学一个词&#xff0c;要知道他的词类&#xff0c;是名词还是动词&#xff0c;这至关重要。每个词类都有其自己的特点&#xff0c;只有知道这个词&#xff0c;属于哪个词类&#xff0c;才能正确的使用它。同时还要弄清各个…

centos 6 x64 mysql_CentOS 6.x版本升级Mysql

首先确定一下自己的DNS vi /etc/resolv.conf 我一般为114.114.114.114#-----------------------------CentOS 6.x版本升级Mysql ------------------#! /bin/sh#1.关闭selinuxcp -rp /etc/selinux/config /etc/selinux/config.baksetenforce 0sed -i 7s/enforcing/disabled/…

关于Hibernate 3

Hibernate 3作了一些改进&#xff0c;改进了一些原来很显而易见的缺点。例如加了抽象语法树&#xff0c;但是在Hibernate 3.0 Beta1中&#xff0c;感觉还是有些不大成熟。从代码可以看出&#xff0c;Hibernate 3.0 Beta1的HQL AST使用了antlr&#xff0c;我向来不大喜欢这种使用…

程序员都想,却不敢做的事?我来!

一个 “实用” 的好命令&#xff0c;我不得试试&#xff1f;大家好&#xff0c;我是鱼皮。在编程届&#xff0c;有一个家喻户晓的实用 Linux 命令&#xff1a;rm -rf / 。据说&#xff0c;此命令一旦执行成功&#xff0c;就会给人带来快乐&#xff0c;是一个善良的好命令&#…

也来谈谈这致命的手机充电器

这两天有很多关于因使用iPhone在充电时打电话被电死的讨论&#xff0c;因此这里也来谈谈几点。 手机充电器的工作原理 刚好前段时间拆了两个充电器&#xff0c;看下里面的电路就明白了。鉴于网络上不明真相出来误导人的特别多&#xff0c;很多网站竟然还有文章说手机充电器里没…

每日一笑 | 一些关于学编程的领悟

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

java基础变量_Java基础语法之变量和常量

上行没有"{"时&#xff0c;下行代码与上行首字母对齐标识符概述在Java中对变量、常量、函数和语句块都是有名字的&#xff0c;他们的名字统称为Java标识符。是为类、对象、方法、变量、接口和自定义数据类型命名的。组成标识符是由数字、字母、下划线(_)和美元符($)或…

GARFIELD@01-07-2005

completist 转载于:https://www.cnblogs.com/rexhost/archive/2005/01/07/88107.html

非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)

1、HDFS简介 HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop项目的核心子项目&#xff0c;是分布式计算中数据存储管理的基础&#xff0c;是基于流数据模式访问和处理超大文件的需求而开发的&#xff0c;可以运行于廉价的商用服务器上。它所具有的高容错…

.net core 浅克隆和深克隆/浅拷贝和深拷贝

除非语言里只有基础类型&#xff0c;没有引用类型&#xff0c;否则用任何一种编程语言克隆对象都是很棘手的事情。1、前言"老沉&#xff0c;什么是深克隆&#xff0c;什么是浅克隆?"“哈&#xff0c;迷茫了&#xff1f;这深深浅浅的体验是不是把你搞晕了&#xff1f…

中国三代核电最新进展;AI助力发现系外行星;腾讯发现特斯拉系统漏洞;论文剽窃被撤销学位;金立破产债权达173亿;这就是今日大新闻...

今天是4月3日农历二月廿八今天星期三最近上班老是有人来推销办理信用卡是谁把我缺钱花的消息透露出去了下面是今天的大新闻中国发布三代核电最新进展&#xff08;环球时报&#xff09;由中国核能行业协会主办的中国核能可持续发展论坛1日在京举行&#xff0c;多位专家现场发布了…

java对象模型是什么_蓝石榴_个人博客_JVM内存结构、Java内存模型、Java对象模型...

JVM内存结构我们都知道&#xff0c;Java代码是要运行在虚拟机上的&#xff0c;而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域&#xff0c;这些区域都有各自的用途。其中有些区域随着虚拟机进程的启动而存在&#xff0c;而有些区域则依赖用户线程的…

学习kaneboy的 sps区域列表的管理入口程序

昨天&#xff0c;打开kaneboy提供的一个用于为sps区域中的列表提供权限管理入口的代码。发现他的程序里面的原理很简单。 在wss站点中&#xff0c;每个文档库、每个列表都会有权限设置&#xff0c;而这个权限设置界面的入口是一个链接&#xff0c;我们只要单击这个链接就可以进…

使用微信云托管快速部署一个.Net Core项目(一)

前几天微信将小程序开发者工具内的云托管升级为微信云托管&#xff0c;新增了很多诸如OpenApi、MySql数据库、流水线构建、web控制台等能力。看文档还是蛮激动的&#xff0c;对开发者来说确实是个好消息&#xff0c;因为之前的一些业务逻辑大都写在云函数或者部署在服务器里面&…

中国禁止洋垃圾后,韩国这座垃圾山已经烧了3个月,全部烧完还要5年!

全世界只有3.14 % 的人关注了数据与算法之美2017年5月&#xff0c;韩国洛东江畔的樱花&#xff08;图片来源&#xff1a;东方IC&#xff09;去年平昌冬奥会&#xff0c;由5名来自义城郡的姑娘组成的韩国冰壶队战胜各路强手&#xff0c;夺得亚军&#xff0c;这让义城郡这座风景秀…

zendframework配置篇

1. 重写配置 httpd.conf配置修改 LoadModule rewrite_module modules/mod_rewrite.so <Directory "D:\PHPProject\MVCA\public"> AllowOverride All </Directory> 2.application.config.php中添加模块&#xff0c;如 Album,紧跟Application后面