我很少与一小撮代码混淆 - 我创建了自己的the problem asked here解决方案 - 在KeyUp事件中我执行一些检查然后添加一个空格或删除一个字符:
private void myTextbox_KeyUp1(object sender, System.Windows.Input.KeyEventArgs e)
{
string text = myTextbox.Text;
if (text.Length > 3)
{
if (e.Key == System.Windows.Input.Key.Back)
{
if (text.Length % 5 == 4) text = text.Substring(0, text.Length - 1);
}
else if ((text.Length - (text.Length / 5)) % 4 == 0) text += " ";
}
myTextbox.Text = text;
myTextbox.SelectionStart = text.Length;
}
代码工作得很好。但是,如果我只将内部if语句更改为类似的内容(组合两个if语句):
if (e.Key == System.Windows.Input.Key.Back && text.Length % 5 == 4)
text = text.Substring(0, text.Length - 1);
当我有超过10个字符然后尝试删除时,代码停止工作,我无法删除第10个字符(空格)。
答案 0 :(得分:1)
我认为这是因为,通过组合2个if语句,你会进入else if,从而增加一个空格
10 - (10/5) % 4
等于0,所以添加一个空格。