只允许输入数字的TextBox控件
【实例说明】
可以在TextBox控件中轻松地输入文本信息,输入的文本信息可以包括字母、数字、汉字等。
如果需要用户在TextBox控件中填写年龄信息,那么年龄信息应当只允许数字,怎么限制用户输入其他信息呢?
本实例中将会演如何只允许用户在TextBox控件中输入数字,当按下其他非数字按钮时便会提示:
这个例子很简单的,限制输入,直接在KeyPress事件里验证就行了。下面说了两种方式:
【关键技术】
本实例重点在于向读者介绍怎样通过Char结构的isDigit方法判断用户在TextBox控件中输入的字符是否为数字,以及使用按键对应的Ascii值判断是否是指定范围的按键等等。下面对本实例用到的关键技术进行详细的讲解。
TextBox控件的KeyPress事件包含两个参数,即sender事件源和包含事件数据的e,
通过e的KeyChar属性可以获取用户按下键盘的按键,通过e的Handler属性可以设置是否处理过用户按键的事件。
通过e.KeyChar转成int的值可以获取到当前用户按下键盘的按键对应的ASCII值。
(1)KeyChar属性
该属性用于获取或设置按下键对应的字符,语法格式如下:
public char KeyChar{ get; set; }
参数说明
属性值:Char结构,饿到按下键对应的字符。
(2)Handled属性
该属性用来获取或设置一个值,该值只是是否处理过System.Windows.Forms.Control.KeyPress事件,语法格式如下:
public bool Handled{ get; set; }
参数说明
属性值:布尔类型,只是是否处理过KeyPress事件。
使用Char结构的isDigit方法可以判断指定字符是否为十进制数字,下面对其进行详细说明。
(3)isDigit方法
该方法只是某个字符是否属于十进制数字类别,语法格式如下:
public static bool IsDigit(char c)
参数说明
c:一个字符
返回值:返回布尔值,如果字符c是是兼职数字则为true,否则为false。
说明:通过KeyPressEventArgs的Handled设置为true,可以取消KeyPress事件,这样可以取消用户在TextBox按键的值。
【设计过程】
(1)打开Visual Studio,新建WinForm应用程序,命名为OnlyDigit。
(2)更改默认窗体Form1的Name属性为FrmMain,向窗体中添加一个TextBox文本框控件,用于演示只允许向文本框中输入数字。
(3)程序的主要代码如下:
// 在当前输入框中按下并弹起按键的事件
private void txt_Input_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar)) // 如果当前输入的不是数字
{
MessageBox.Show("请输入数字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information); // 给出错误提示
e.Handled = true; // 取消当前操作,即取消在控件中现实该字符的操作
}
}
上面这段代码表示,使用char的IsDigit方法判断传进来的char字符是不是一个十进制的数字、
当你运行这段代码会发现:我们按下非数字的字母或符号的时候,确实实现了这个效果、
但是、当你按下回车、退格、Ctrl等等这些按键的时候、同样认为是非数字被拦截了、
所以、这时就需要使用ASCII值判断数字范围了,因此,另一种写法:
// 在当前输入框中按下并弹起按键的事件
private void txt_Input_KeyPress(object sender, KeyPressEventArgs e)
{
int keyAsciiValue = Convert.ToInt32(e.KeyChar); // 获取当前按下的按键对应的ASCII值
// 如果当前ASCII值范围不在48-57之间、也就是0-9对应的ASCII值之间
// 或者ASCII的值不是8[退格键]或13[回车键]时
&& keyAsciiValue <= ) || (keyAsciiValue == || keyAsciiValue == ))))
{ //如果上面的验证结果是false
MessageBox.Show("请输入数字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information); // 给出错误提示
e.Handled = true;
}
//if (!char.IsDigit(e.KeyChar)) // 如果当前输入的不是数字
//{
// MessageBox.Show("请输入数字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information); // 给出错误提示
// e.Handled = true; // 取消当前操作,即取消在控件中现实该字符的操作
//}
}
我这里不能插附件,要源码的话留言吧,呵呵。
【来自:[LonelyShadow 博客] http://www.cnblogs.com/LonelyShadow】
只允许输入数字的TextBox控件的更多相关文章
- ASP.NET c# textbox 正则表达式 文本框只允许输入数字(验证控件RegularExpressionValidator )
<input type="text" name="test" onKeyUp="test1.value=(this.value=this.val ...
- C# TextBox中只允许输入数字的方法
1.在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理, 判断keychar的值.限制只能输入数字,小数点,Backspace,del这几个键.数字0-9所 ...
- [摘]ASP.Net标准控件(TextBox控件)
TextBox控件 TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属 性 说 ...
- ASP.Net TextBox控件只允许输入数字
原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...
- c#textBox控件限制只允许输入数字及小数点,是否为空
c#textBox控件限制只允许输入数字及小数点 转载 //判断按键是不是要输入的类型. if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) ...
- C#中设置TextBox控件中仅可以输入数字且设置上限
首先设置只可以输入数字: 首先设置TextBox控件的KeyPress事件:当用户按下的键盘的键不在数字位的话,就禁止输入 private void textBox1_KeyPress(object ...
- C# textBox控件只允许为数字和小数点并且提取出这个数字
一. textBox控件实现只允许为数字和小数点 如下图所示,在textBox控件框内输入只能是 要在textBox控件属性设置按键按下的事件触发,如下图所示: 二.源代码 textBox控件只允许为 ...
- c# TextBox只允许输入数字,禁用右键粘贴,允许Ctrl+v粘贴数字
TextBox只允许输入数字,最大长度为10 //TextBox.ShortcutsEnabled为false 禁止右键和Ctrl+v private void txtNumber_KeyPress( ...
- 2019-3-22c# TextBox只允许输入数字,禁用右键粘贴,允许Ctrl+v粘贴数字
TextBox 禁止复制粘贴 ShortcutsEnabled =false TextBox只允许输入数字,最大长度为10 //TextBox.ShortcutsEnabled为false 禁止右键和 ...
随机推荐
- Android应用在不同版本间兼容性处理
在Android系统中向下兼容性比较差,但是一个应用APP经过处理还是可以在各个版本间运行的.向下兼容性不好,不同版本的系统其API版本也不同,自然有些接口也不同,新的平台不能使用旧的API,旧的平台 ...
- mysql-connector-python
wget http://cdn.mysql.com//Downloads/Connector-Python/mysql-connector-python-2.1.3.tar.gz tar mysql- ...
- Windows 8.1 Hyper-V安装的虚拟机
一.安装Hyper-v Hyper-V内置于Windows 8中,用户无需格外的下载安装文件,只需要到Windows 8的程序管理中将其选中开启功能即可. 具体步骤:控制面板→程序→启用或关闭Wind ...
- MySQL(4):数据表创建
数据库是表的容器,表,必须属于某个数据库. 可以通过.语法,指明数据表所属的数据库 比如:database.table 进行表操作的时候,都会指定当前的默认数据库. use db_name; 1.创建 ...
- h5拖放-拖拽购物车
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- windows下回车与换行符
windows下回车与换行符 从键盘输入的数据一般是ASCII码,也就是文本文件,在送到计算机内存时,回车和换行符转换成一个换行符(也就是说回车和换行符在windows文本中是两个字符),再从内存中以 ...
- SQL Server用存储过程新建视图
CREATE PROCEDURE [dbo].[p_GetV_view]ASBEGIN DECLARE @sqlstr1 varchar(255) DECLARE @sqlstr2 varchar(2 ...
- logstash input jdbc连接数据库
示例 以下配置能够实现从 SQL Server 数据库中查询数据,并增量式的把数据库记录导入到 ES 中. 1. 查询的 SQL 语句在 statement_filepath => " ...
- APUE(3)——文件I/O
大多数情况下,我们都会利用Standard I/O Library来进行I/O操作,而这一章所讲的I/O是UNIX系统直接提供的I/O操作,且大多是Unbuffered I/O,即每一次读或写都会出现 ...
- [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor
本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...