C# 将焦点放回验证失败时的上一个文本框
如果验证失败,我希望焦点回到上一个文本框。我正在验证lostFocus事件上的Textbox控件值。我需要一些帮助 这个问题也很难回答C# 将焦点放回验证失败时的上一个文本框,c#,wpf,winforms,c#-3.0,C#,Wpf,Winforms,C# 3.0,如果验证失败,我希望焦点回到上一个文本框。我正在验证lostFocus事件上的Textbox控件值。我需要一些帮助 这个问题也很难回答 如果您试图将一个元素集中在它自己的LostFocus处理程序中,您将面临StackOverflowException,我不确定其根本原因(我怀疑焦点会反弹),但有一个简单的解决方法:分派它 private void TextBox_LostFocus(object sender, RoutedEventArgs e) { var element = (s
如果您试图将一个元素集中在它自己的
LostFocus
处理程序中,您将面临StackOverflowException
,我不确定其根本原因(我怀疑焦点会反弹),但有一个简单的解决方法:分派它
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);
}
}
通过Dispatcher.BeginInvoke
您可以确保恢复焦点不会妨碍正在进行的焦点丢失(并避免否则将面临的严重异常)