Home > DeveloperSection > Forums > Keep Focus back to the previous Textbox on failed validation
Ankit Singh

Total Post:341

Points:2389
Posted on    March-26-2014 3:25 AM

 C# C# 
Ratings:


 1 Reply(s)
 896  View(s)
Rate this:
I want Focus back to the previous Textbox if validation gets failed. I am validating the Textbox control value on lostFocus event. 

Need some help.


Pravesh Singh

Total Post:411

Points:2881
Posted on    March-26-2014 4:10 AM

Hi Ankit,

If you attempt to focus an element inside its own LostFocus handler you will face a StackOverflowException, I'm not sure about the root cause (I suspect the focus kind of bounces around) but there is an easy workaround: dispatch it.

private void TextBox_LostFocus(object sender, RoutedEventArgs e)

{

    var element = (sender as TextBox);

    if (!theTextBoxWasValidated())

    {

        // doing this would cause a StackOverflowException

        // element.Focus();

        var restoreFocus = (System.Threading.ThreadStart)delegate { element.Focus(); };

        Dispatcher.BeginInvoke(restoreFocus);

    }

}

Through Dispatcher.BeginInvoke you make sure that restoring the focus doesn't get in the way of the in-progress loss of focus (and avoid the nasty exception you'd face otherwise)


Don't want to miss updates? Please click the below button!

Follow MindStick