【问题标题】:WPF: Putting focus back on textbox recursively calling Lost focus event.How to solve?WPF:将焦点放回文本框递归调用丢失焦点事件。如何解决?
【发布时间】:2010-09-08 14:40:15
【问题描述】:

我有一个 WPF 表单,其中存在一个文本框和标签。在文本框的“失去焦点”事件中,我正在做一些验证,如果验证失败,我将在标签中显示一条错误消息并放置焦点回到文本框。问题是因为我把焦点放回文本 bos 上,“Lost_Focus 事件再次触发,我的验证函数被递归调用,我得到一个“StackOverflow”异常

  An unhandled exception of type 'System.StackOverflowException' occurred in 
  mscorlib.dll

如果我评论将光标/焦点放在文本框中的行,一切正常。但是如果验证失败,我需要将光标放在文本框中

任何想法如何摆脱这个?

【问题讨论】:

    标签: wpf events focus lost-focus


    【解决方案1】:

    改为处理 TextBox.PreviewLostKeyboardFocus 怎么样?而在事件处理程序中,只要验证失败就设置“e.Handled = true”?

    【讨论】:

    • PreviewLostKeyboardFocus 将只处理键盘输入。我的应用将使用条形码扫描仪读取文本框中的值
    • 我认为它应该仍然可以正常工作,不是吗?你试过了吗?
    • 我认为普通的 LostKeyboardFocus 事件是比 PreviewLostKeyboardFocus 更好的选择,仅仅是因为它使用气泡路由,而不是隧道路由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多