我用C#写了一个Wince智能设备程序 让TextBox只能输入数字 代码如下:

privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse){if((e.KeyChar<48||e.Key... private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
e.Handled = true;
}
问题来了 下断点调试时(分别在大括号开头和e.Handled下断点) 用虚拟键盘输入数字字母都不进函数 但是退格键是进函数的
并且我在KeyDown里面检测并监视KeyValue值 数字和字母键值总是 229 求解
上下左右各种符号也能检测到,就是字母数字不行、、、但是输入框输入什么字母就显示什么字母输入什么数字就显示什么数字 输入符号程序进e.Handled,会忽略 ..
展开
 我来答
376710727
2016-07-11 · TA获得超过8937个赞
知道大有可为答主
回答量:2593
采纳率:100%
帮助的人:1248万
展开全部
使用键盘输入的char值来判断是一种控制输入的做法,但是对于目前的软件开发来说,并不是最好的。

我之前也做过类似的ce和mobil设备开发,使用 keychar几个问题,
一、是虚拟键盘,(就是你碰到的这个问题),虚拟键盘输入的char和实体键盘输入的char值并不完全对应, 而且不同的机器输入同一个数字的char值都不一样,这个可能是系统二次开发导致的,
二、扫描识别码(条形码、二维码),如果一个文本框既要允许用户手动输入,又要兼容扫描,那么这个文本框判断同样不能用keychar,因为扫描二维码的时候,keychar也是会完全乱掉,(我做过的大部分国内手持机都这样)。
三、用户复制了一个值进去,keychar肯定不对。

所以更好的做法是控制textbox的TextChange事件,每当文本框内的文本变化,使用
int.TryParse(Textbox1.Text,out result) 来判断文本是否为数字类型(int32),这样是最准确的,并且兼容了大多数录入方式。
当然也有更好的方法,比如重写控件,使用钩子等等,就比较复杂了。
追问
没有TryParse 只有Parse 输入字母报应用程序错误 怎么解决
追答
你的ce版本有点低,,
使用try来判断
try{
int result = int.Parse(textbox.Text);
}
catch{
Messagebox.Show("请输入数字");
return;
}
syht2000
高粉答主

2016-07-11 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
你把设备直接接在电脑上,真机调试,估计进断点没问题。
追问
就是用的真机调试  按说没问题  是不是我搭建工程时弄错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式