C#限制文本框输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#限制文本框输入相关的知识,希望对你有一定的参考价值。

C#限制文本框 只能输入0-9 a-z A-Z _ 等信息
且不禁止右键粘贴 和 ctrl+v 复制
但是 粘贴的数据需过滤 如果不符合 不接受粘贴
我需要 知道 是键盘的什么事件处理 禁止输入最好
怎么去过滤 剪切板的数据 而且不符合的数据怎么不接收

补充一下, WinForm程序

限制文本框,只能输入0-9 a-z
这个可以写在文本框的keypress事件中
if(!char.IsLetterorDigit(e.KeyChar))

MessageBox.Show("Wrong");
e.Handled=true;

至於复制 粘贴 应该是去判断Clipboard获取的对象是否符合以上(0-9 a-z等)条件,如果符合就
可执行粘贴的动作,否则不执行(未验证)追问

如果在 keypress事件中做了输入判断 ctrl+v 已经无效

追答

不會,仍然可以粘貼的,我測試過;
另外複製粘貼這個限制可以這樣
這個寫在文本框的MouseDown事件中
private void textBox1_MouseDown(object sender, MouseEventArgs e)

if (e.Button == MouseButtons.Right)

string test=ClipBorad.GetText();
ClipBoard.clear();
If(IsLegalString(test))//判斷該粘貼的字符是否滿足你的條件

//如果滿足 ClipBoard.setText(test)
//如果不滿足,該干嗎就干嗎去



参考技术A 给你个思路:

change 事件. 值发生改变的时候. 默认值为 "" (空)
值发生改变的时候, 判断内容. 用循环, 逐个字符判断.

禁止输入可以用 KeyPress 事件, 不论输入什么, 都在此事件执行清空就可以了.
如果想完全禁止输入, ReadOnly 属性 = true 就可以了.追问

在 change事件中 获取在""替换效果不理想 如果粘贴N多字 ...
我想要的就是 不符合的不要接收 不要到文本框

参考技术B 可以在客户端加入js事件判断 参考技术C 考虑用正则表达式做过滤

js验证如何限制文本框只能输入数字

参考技术A

js进行数据校验使用正则表达式会简单很多,如下所示:

1.js验证只能输入数字: 

具体代码如下:

function check_validate1(value)      

var reg = /^/d+$/;  // 定义正则表达式

if( value.constructor === String )  // 判断传入的是否是字符串   

var re = value.match( reg );   // 规则校验

return true;    

    

return false;    

2.js验证只能输入字母.数字和下划线:  

具体代码如下:

function check_validate2(value)    

var reg = /^/w+$/;    

if( value.constructor === String ) // 判断传入的是否是字符串    

var re = value.match( reg );    

return true;    

    

return false;    

 

3.js验证固定电话:只能是数字.并且有相应的格式,如(xxx-xxxxxxx 或者 xxxx-xxxxxxx):  

具体代码如下:

function check_validate(value)    

var reg = /^(/d3,4)-(/d7,8)/;    

if( value.constructor === String ) // 判断传入的是否是字符串    

var re = value.match( reg );    

return true;    

    

return false;    

以上是关于C#限制文本框输入的主要内容,如果未能解决你的问题,请参考以下文章

无法将文本框的输入限制为数字 C# [重复]

C# 文本框只能输入数字

C#限制文本框只能输入指定的类型(汉字数字)

C# winform 文本框里,怎么设置数字的格式?

C# winform 程序中如何限制一个文本框中只输入数字和字母呢?

c#如何判断文本框中是不是是数字