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;
}
}
运行结果有问题:
分析问题产生的原因:
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
非常感谢,解决了头痛的问题。