level 3
摆尾问西洲
楼主
如题,我给一个 TextBox 设置了 TextChanged 事件,在事件响应函数中 判断 输入字符长度>=2 时,焦点跳转至下个输入框。 但是,当这个TextBox 框中已经输入了2个字符,我将这两个字符选中,然后键入 其他字符时,出现了异常。
private void zd2_TextChanged(object sender, TextChangedEventArgs e)
{
//this.zd4.Text = this.zd1.Text;
if ( this.zd2.Text.Length >= 2)
{
this.zd3.Focus();
}
}

经过测试发现,当TextBox 中已有文本被选中时,再键入其他任一字符,TextBox的 TextChanged 事件会执行3次。
如下图所示,选中“TB”,键入“3”,TextChanged 事件中打印TextBox.Text.Length:





求教,我该如何修改,才能使TextBox 中的文本无论是在选中或非选中状态下 每被修改一次,都只触发一次TextChanged 事件。
2017年03月17日 02点03分
1
private void zd2_TextChanged(object sender, TextChangedEventArgs e)
{
//this.zd4.Text = this.zd1.Text;
if ( this.zd2.Text.Length >= 2)
{
this.zd3.Focus();
}
}

经过测试发现,当TextBox 中已有文本被选中时,再键入其他任一字符,TextBox的 TextChanged 事件会执行3次。如下图所示,选中“TB”,键入“3”,TextChanged 事件中打印TextBox.Text.Length:





求教,我该如何修改,才能使TextBox 中的文本无论是在选中或非选中状态下 每被修改一次,都只触发一次TextChanged 事件。