为什么我的LostFocus事件会出现无限循环

LeP*_*sme 2 c# events textbox infinite-loop lostfocus

我是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);
    }
Run Code Online (Sandbox Code Playgroud)

当我在文本框中输入一个字母时,有一个无限循环,似乎tb.Focus()实际上导致LostFocus事件被递归调用.我不明白为什么调用对象的Focus方法会触发同一对象的LostFocus事件.

Xaq*_*ron 5

打开模态MessageBox是失去焦点的原因.尝试挂钩Validating事件.