如何让这textbox 的值得注意1000

tkucn 2011-11-24 09:54:32
void Qfbz_txtKeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar==48)
{

if (e.KeyChar==48)
{
qfbz_txt.Text=null;
qfbz_txt.Text="";
qfbz_txt.Text="1000";
}
}


我需要在textbox里输“0”,然后textbox里显示的是1000,我以上代码显示的是 01000

多谢高手解疑
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
funxu 2011-11-24
  • 打赏
  • 举报
回复
前面表述不严谨,应该是这样
keypress是在字符显示之前进行处理的,而keyup是在字符显示之后进行处理,而消息,他们处理的是ascii键码消息和虚拟键码消息
funxu 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gxttr 的回复:]
键盘按下时,是KeyDown事件
键盘松开时,是KeyUp事件
键盘按下再松开的整个过程,是KeyPress事件
这才是区别
加上 e.Handled = true; 就可以了,用来阻止事件的默认传播,不然你处理后,windows还会做该事件的……
[/Quote]
做一个测试例子就会发现
keypress是在控件显示按键消息之前对消息进行的处理而不是抬起和按下的整个过程
,下面这个例子如果按住按键不抬起keypress也会不断地处理按键消息


private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
textBox2.Text = textBox1.Text;
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
textBox3.Text = textBox1.Text;
}
遥望那些年 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 funxu 的回复:]

keypress是在消息响应前进行处理的,而keyup是在消息响应后进行处理,这就是区别
[/Quote]

键盘按下时,是KeyDown事件
键盘松开时,是KeyUp事件
键盘按下再松开的整个过程,是KeyPress事件
这才是区别

加上 e.Handled = true; 就可以了,用来阻止事件的默认传播,不然你处理后,windows还会做该事件的默认处理工作,也就是显示你输入的0
tkucn 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gxttr 的回复:]
C# code

if (e.KeyChar==48)
{
qfbz_txt.Text=null;
qfbz_txt.Text="";
qfbz_txt.Text="1000";

e.Handled = true;
}
[/Quote]


这们兄弟的正确.

e.KeyChar 在Key_Up里是要报错的
冰灵公主 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
换个事件 用Key_Up
[/Quote]
对的
funxu 2011-11-24
  • 打赏
  • 举报
回复
keypress是在消息响应前进行处理的,而keyup是在消息响应后进行处理,这就是区别
遥望那些年 2011-11-24
  • 打赏
  • 举报
回复

if (e.KeyChar==48)
{
qfbz_txt.Text=null;
qfbz_txt.Text="";
qfbz_txt.Text="1000";

e.Handled = true;
}
阿非 2011-11-24
  • 打赏
  • 举报
回复
换个事件 用Key_Up

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧