使用WM_CHAR消息来限制用户的输入
来源:互联网 发布:手机软件分类软件 编辑:程序博客网 时间:2024/05/14 18:05
在做管理系统的时候,经常要限制用户的输入,如,只可以输入数字,等等
net 下限制用户输入,很多人是在键盘,或 textBox 的 TextChanged 事件里
这样做
1.不能限制用户的粘贴
2.严重干扰数据绑定等操作
3.有时还需要备份原始数据进行还原
限制输入的时机是在,windows 消息 WM_CHAR 触发时
但.net 恰恰没有提供这个消息的事件映射.
继承TextBox 重写 WndProc 函数 (优点点oo编程的优点我不说了)
这里我们就捕获系统中的WM_CHAE消息来检测用户的输入
public class cxyTextBox : TextBox
...{
private const string tip = "这个输入框只允许输入数字";
protected override void WndProc(ref Message m)
...{
switch (m.Msg)
...{
case APINameHelper.WM_CHAR:
char inputchar = (char)m.WParam;
if (char.IsDigit(inputchar))
...{
base.WndProc(ref m);
return;
}
else
...{
MessageBox.Show(tip);
return;
}
// 然后取 m.WParam 进行判断 m.WParam 就是用户输入的字符的 int 表示方式
// 如果是被限制的字符 直接 Return
//不走 base.WndProc (ref m);
break;
case APINameHelper.WM_PASTE:
string pasted = Text;
foreach (char c in pasted)
...{
if (char.IsDigit(c))
continue;
else
...{
MessageBox.Show(tip);
return;
}
}
//判断剪贴板的数据是否是符合要求如果符合不做任何处理
//否则 Return 不走默然处理即可
base.WndProc(ref m);
return;
break;
default:
break;
}
base.WndProc(ref m);
}
...{
private const string tip = "这个输入框只允许输入数字";
protected override void WndProc(ref Message m)
...{
switch (m.Msg)
...{
case APINameHelper.WM_CHAR:
char inputchar = (char)m.WParam;
if (char.IsDigit(inputchar))
...{
base.WndProc(ref m);
return;
}
else
...{
MessageBox.Show(tip);
return;
}
// 然后取 m.WParam 进行判断 m.WParam 就是用户输入的字符的 int 表示方式
// 如果是被限制的字符 直接 Return
//不走 base.WndProc (ref m);
break;
case APINameHelper.WM_PASTE:
string pasted = Text;
foreach (char c in pasted)
...{
if (char.IsDigit(c))
continue;
else
...{
MessageBox.Show(tip);
return;
}
}
//判断剪贴板的数据是否是符合要求如果符合不做任何处理
//否则 Return 不走默然处理即可
base.WndProc(ref m);
return;
break;
default:
break;
}
base.WndProc(ref m);
}
- 使用WM_CHAR消息来限制用户的输入
- 关于WM_CHAR 消息的解读
- WM_CHAR消息
- WM_CHAR消息
- WM_CHAR消息
- 限制用户输入的方法
- try{ }catch{ }在限制用户输入数据时的使用
- 使用ValidationRule类来检查用户输入的有效性
- 基于MFC对话框的键盘消息响应 WM_KEYDOWN WM_CHAR消息
- EditText限制用户的输入 inputType
- 用户输入内容长度限制的异常
- EditText限制用户的输入 inputType
- 用户输入密码次数的限制笔记
- 利用javascript来限制文本的一些文本输入限制
- 使用WM_PASTE 和 WM_CHAR 消息时中文乱码总结
- wm_char消息处理
- Dialog响应WM_CHAR消息
- Android:EditView统计用户输入的数量,限制输入!
- 面向对象设计原则
- SQLExpress无法启动问题
- OpenGL的帧缓存 (天 蚕 蛾)
- Out-Default 帮助信息
- 欢迎大家多踩踩偶的个人博客噶 哇哈哈
- 使用WM_CHAR消息来限制用户的输入
- 使用API函数查找窗体并激活
- 构建VoIP Web callback系统 ---基于Web方式的phone2phone通信方式(2)
- Oracle体系结构之-逻辑结构
- 我和生活
- 深信服笔试
- 试验网站#1搜索引擎优化收录情况记录(断续运行)2007-10-14
- 试验网站#3搜索引擎优化收录情况记录2007-10-14
- KDE4 rc的评价