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多谢高手解疑

解决方案 »

  1.   


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

  2.   

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

  3.   

    这们兄弟的正确.e.KeyChar 在Key_Up里是要报错的
      

  4.   


    键盘按下时,是KeyDown事件
    键盘松开时,是KeyUp事件
    键盘按下再松开的整个过程,是KeyPress事件
    这才是区别加上 e.Handled = true; 就可以了,用来阻止事件的默认传播,不然你处理后,windows还会做该事件的默认处理工作,也就是显示你输入的0
      

  5.   

    做一个测试例子就会发现
    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;
            }
      

  6.   

    前面表述不严谨,应该是这样
    keypress是在字符显示之前进行处理的,而keyup是在字符显示之后进行处理,而消息,他们处理的是ascii键码消息和虚拟键码消息