我是C#的初学者,我正在开发一个基本的应用程序 我想检查文本框的值是否是带有以下代码的数字:
private void check_value(object sender)
{
TextBox tb = (TextBox)sender ;
if (!Utility.isNumeric(tb.Text)){
MessageBox.Show(tb.Text.Length.ToString());
tb.Focus();
}
}
private void Amount_1_LostFocus(object sender, RoutedEventArgs e)
{
check_value(sender);
}
当我在文本框中输入一个字母时,有一个无限循环,似乎tb.Focus()实际上导致LostFocus事件被递归调用。 我不明白为什么调用对象的Focus方法会触发同一对象的LostFocus事件。
答案 0 :(得分:5)
打开模态MessageBox
是失去焦点的原因。尝试挂钩Validating
事件。
答案 1 :(得分:0)
正如我之前在Xaqron提供的链接中所说,它被禁止在LostFocus事件中使用Focus方法。
当我正在开发WPF应用程序时,没有Validating事件和CausesValidation属性,因此验证内容的其他方法是使用TextChanged事件或使用绑定验证。
感谢您的回答。