验证失败时,将焦点保持在前一个文本框上
本文关键字:一个 文本 失败 焦点 验证 | 更新日期: 2023-09-27 17:50:25
如果验证失败,我希望Focus回到前一个文本框。我正在验证lostFocus事件上的Textbox控件值。我需要帮助。
这个问题以前也有过link is
在winforms, .net 3.5 WEC7
如果您试图在其自己的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
,您可以确保恢复焦点不会妨碍正在进行的焦点丢失(并避免您将面临的令人讨厌的异常)