从OnLostFocus事件c#silverlight组件中设置Focus一个屏蔽文本框



我试图在c1屏蔽的文本框中执行一些自定义验证,验证必须在LostFocus()上进行。问题是,当im从OnLostFocus()中调用Focus(()时,它会导致控件再次失去/获得焦点,这是无限循环。任何帮助/建议都会很棒!

提前感谢!!!

下面基本上是我所拥有的代码:

    protected override void OnLostFocus(RoutedEventArgs e)
    {
        if (!CheckAndRunValidator())
        {
            Focus();
            SelectAll();
            return;
        }
        base.OnLostFocus(e);
    }

您可以尝试

Dispatcher.BeginInvoke( () => Focus() );

如果不起作用,请尝试使用带有短IntervalDispatcherTimer,并在Tick事件中进行焦点处理。

最新更新