WPF 限制Textbox输入的内容
限制文本框TextBox的输入内容,在很多场景都有应用。举个例子,现在文本框中,只能输入0、1、2、3、4、5、6、7、8、9、“|”这11个字符。
限制输入0-9很容易实现,关键是这个“|”符号。它在WPF中对应的是Key.OemPipe键。如果直接允许该键输入,那么会有“\”这个符号也可以输入。那么问题来了,怎么才能限制呢?很简单:先确认shift键是否已经按下。
关键代码如下:
bool shiftKey = (Keyboard.Modifiers & ModifierKeys.Shift) != ;
这样,当我们确认已经按下了shift键时,才允许Key.OemPiple键按下,就可以确保只能输入“|”符号了。
一个完整的示例代码如下:
private void textbox_keydown_event(object sender, KeyEventArgs)
{
bool shiftKey = (Keyboard.Modifiers & ModifierKeys.Shift) != ;
if (shiftKey == true)
{
if (e.Key != Key.OemPipe)
{
e.Handled = true;
}
}
else if (e.Key != Key.Delete && e.Key != Key.Back &&
e.Key != Key.D0 && e.Key != Key.D1 &&
e.Key != Key.D2 && e.Key != Key.D3 &&
e.Key != Key.D4 && e.Key != Key.D5 &&
e.Key != Key.D6 && e.Key != Key.D7 &&
e.Key != Key.D8 && e.Key != Key.D9 &&
e.Key != Key.NumPad0 && e.Key != Key.NumPad1 &&
e.Key != Key.NumPad2 && e.Key != Key.NumPad3 &&
e.Key != Key.NumPad4 && e.Key != Key.NumPad5 &&
e.Key != Key.NumPad6 && e.Key != Key.NumPad7 &&
e.Key != Key.NumPad8 && e.Key != Key.NumPad9)
{
e.Handled = true;
}
}
更新:
又出了新的需求!!!!!
要过滤空格输入。测试了一下,发现空格键space、上下左右、PageUp、PageDown几个键是KeyDown事件无法捕获的——也许可以捕获,反正我没有捕获到。测试还发现KeyUp和PreviewKeyDown事件都可以捕获。但是,问题是,使用KeyUp事件时,即是捕获到了,这个空格已经输入了,如果再删除,也会造成不好的体验。所以只有使用PreviewKeyDown事件了。基本方式如上面。
WPF 限制Textbox输入的内容的更多相关文章
- WPF 自定义TextBox带水印控件,可设置圆角
一.简单设置水印TextBox控件,废话不多说看代码: <TextBox TextWrapping="Wrap" Margin="10" Height=& ...
- WPF IP地址输入控件的实现
一.前言 WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现. 我们先看一下IP地址输入控件有什么特性: 输满三个数字焦点会往右移 键盘←→可以空光标移动 任意位置可复制整段IP地址,且支持 ...
- WPF 设置TextBox为空时,背景为文字提示
WPF 设置TextBox为空时,背景为文字提示. <TextBox FontSize="17" Height="26" Margin="2 ...
- WPF拖动DataGrid滚动条时内容混乱的解决方法
WPF拖动DataGrid滚动条时内容混乱的解决方法 在WPF中,如果DataGrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况.解决方法就是在Binding的时候给Update ...
- WPF自定义TextBox及ScrollViewer
原文:WPF自定义TextBox及ScrollViewer 寒假过完,在家真心什么都做不了,可能年龄大了,再想以前那样能专心坐下来已经不行了.回来第一件事就是改了项目的一个bug,最近又新增了一个新的 ...
- [JS] 文本框判断输入的内容是否为数字
可以通过触发文本框的onchange事件来对输入的内容进行判断是否为数字 文本框的属性设置: 把onchange的属性对应的js函数写好即可 参数传输的是当前控件的value值,即text值 < ...
- mailto实现将用户在网页中输入的内容传递到本地邮件客户端
背景: 想在自己的网站中有这样一个设计: 用户点击提交按钮之后,就会打开本地邮件客户端,并自动将他在输入框中输入的内容作为邮件的内容,像下面这样: mailto可以帮助实现这个功能. 简介: mail ...
- jquery+php实现用户输入搜索内容时自动提示
index.html <html> <head> <meta charset=;} #search_auto li a:hover{background:#D8D ...
- Android控件之MultiAutoCompleteTextView(自动匹配输入的内容)
一.功能 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用在发送短信,发邮件时选择联系人这种类型中 二.独特属性 android:comp ...
随机推荐
- RTB撕开黑盒子 Part 3: Beyond Surplus
在本文中,我将解释如果要对整个推广计划最大化利润,决定是否应该出价的应该是期望回本率(ROI),而不是期望利润,这与我们以前介绍的有所不同.在Datacratic,我们已经在2012年底切到了基于RO ...
- CodeFirst 初恋
CodeFirst 初恋 原著:Prorgamming Entity Framework Entitywork Code First 大家好! 我是AaronYang,这本书我也挺喜欢的,看了一半了, ...
- WINDOWS下安装PHP7出现PHP-CGI无法启动
事情经过:下载PHP 7.0 然后运行,发现php-cgi一直挂掉.启动不起来.我直接到文件夹下启动PHP-CGI 启动, 失败,报错提示:缺失vcruntime140.dll.当时心中暗暗一笑,当年 ...
- 简单使用JSON,JavaScript中创建 JSON 对象(一)
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...
- iOS多线程的初步研究3
iOS多线程的初步研究(三) 弄清楚NSRunLoop确实需要花时间,这个类的概念和模式似乎是Apple的平台独有(iOS+MacOSX),很难彻底搞懂(iOS没开源,呜呜). 官网的解释是说run ...
- 新版C#编译器关于函数闭包
新版C#编译器关于函数闭包的一处更改 在Visual Basic.NET中,如果你写下类似下面的代码: Public Sub Test() For i = 0 To 100 Dim func = ...
- DIV+CSS命名参考
用了一段CSS布局设计网页,发现自己的命名有点混乱,完全按照自己的想法命名,虽然没什么影响,有不给别人看源文件,但是工作室有时候和团队合作完成项目的时候,就遇到麻烦了,要修改一个地方相当的费事.所以还 ...
- phpredis扩展
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->set('test','hello wo ...
- ThinkPHP中连接mysql数据库的四种实用和通用的连接方法
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库适配器来处理.目前的数 ...
- JavaSE——UDP协议网络编程(一)
UDP协议基础: UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用.包括网络视频会议系统在内的众多的客户/服务器模式 ...