110,534
社区成员
发帖
与我相关
我的任务
分享
public class MyTextBox : TextBox
{
protected override void WndProc(ref Message m)
{
const int WM_CHAR = 0x0102;
const int WM_USER = 0x400;
int k = m.WParam.ToInt32();
switch (m.Msg)
{
case 123:
//屏蔽键盘、鼠标右键菜单
m.Msg = WM_USER;
break;
case WM_CHAR:
if ((k >= 48 && k <= 57)||(k >= 65 && k <= 90) || (k >= 97 && k <= 122) || k == 95)
{
//被允许的。
}
else
{
m.Msg = WM_USER;
}
break;
}
base.WndProc(ref m);
}
}
试试重写一下TextBox控件。
//必须包含指定字符,但也允许其它字符:
Regex.IsMatch(input, "[a-zA-Z0-9_]+") == true
// #@aA08 -> true
//空字符串 -> false
//只能包含,且可为空(做法有正查和反查两种):
Regex.IsMatch(input, "[^a-zA-Z0-9_]") == false //不包含其它字符,可为空
空字符串 -> true
//或者
Regex.IsMatch(input, "^[a-zA-Z0-9_]*$") == true //全文只包含指定字符,可为空
空字符串 -> true
//只包含,且不可为空(可空不可空的区别在于 * 和 +):
Regex.IsMatch(input, "^[a-zA-Z0-9_]+$") == true //全文只包含指定字符,且至少1位
//空字符串 -> false
但是你这句话不太理解
现在我想提高字符串的复杂度,如果不包含数字、字母、下划线也会提示错误
限制数字、字母、下划线需要用 Regex.IsMatch(input ,"[^a-zA-Z0-9_]")来匹配, true代表非法,false代表合法。 另外,KeyPress不是一个合适的判断时机,可以考虑用Validating来做校验。
限制数字、字母、下划线需要用 Regex.IsMatch(input ,"[^a-zA-Z0-9_]")来匹配, true代表非法,false代表合法。 另外,KeyPress不是一个合适的判断时机,可以考虑用Validating来做校验。
限制数字、字母、下划线需要用 Regex.IsMatch(input ,"[^a-zA-Z0-9_]")来匹配, true代表非法,false代表合法。 另外,KeyPress不是一个合适的判断时机,可以考虑用Validating来做校验。