textbox文本框中,只能输入数字,且每4个数字后自动插入空格

时间:2022-11-05 17:14:39
 我的代码:
 int num = 0;
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {

            if (e.KeyChar == 8 || Char.IsDigit(e.KeyChar))
            {
                num++;
                e.Handled = false ;
                if (num % 4 == 0)
                {
                    textBox1.Paste(" ");
                }
            }
            else
            {
                e.Handled = true;
            }            
        }

运行结果有问题:
textbox文本框中,只能输入数字,且每4个数字后自动插入空格

分析问题产生的原因:        
        textBox1.Paste(" ");运行时,按键对应的数字还没显示出来,所以就出现了先插入空格,再显示第4个数字的现象

求高手指点解决!!!!!
                

4 个解决方案

#1


textBox1_KeyPress函数结束时才会把按键数据更新到textbox,而textBox1.Paste(" ")是立即显示。

#2


原因是程序根据e.Handled 的值决定是否显示到box,你在函数内更改了属性e.Handled = false ,系统并不知道,只有函数返回,系统检查e.Handled才知道。因此按第4下时,Paste(" ")会立即更新一个空格,函数结束才会更新按键值(4).

#3


 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char achar = e.KeyChar;
            textBox1.Paste(achar.ToString());
            //if (e.KeyChar == 8 || Char.IsDigit(e.KeyChar))
            {
                num++;
                //e.Handled = false;
                e.Handled = true;
                if (num % 4 == 0)
                {
                    textBox1.Paste(" ");
                }
            }
            //else
            //{
            //    e.Handled = true;
            //}     
            
        }

#4


非常感谢,解决了头痛的问题。

#1


textBox1_KeyPress函数结束时才会把按键数据更新到textbox,而textBox1.Paste(" ")是立即显示。

#2


原因是程序根据e.Handled 的值决定是否显示到box,你在函数内更改了属性e.Handled = false ,系统并不知道,只有函数返回,系统检查e.Handled才知道。因此按第4下时,Paste(" ")会立即更新一个空格,函数结束才会更新按键值(4).

#3


 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char achar = e.KeyChar;
            textBox1.Paste(achar.ToString());
            //if (e.KeyChar == 8 || Char.IsDigit(e.KeyChar))
            {
                num++;
                //e.Handled = false;
                e.Handled = true;
                if (num % 4 == 0)
                {
                    textBox1.Paste(" ");
                }
            }
            //else
            //{
            //    e.Handled = true;
            //}     
            
        }

#4


非常感谢,解决了头痛的问题。