【问题标题】:How to re-focus and select all on error?如何重新聚焦并选择所有错误?
【发布时间】:2015-11-22 18:23:38
【问题描述】:

我想帮助我的用户输入错误的 id,方法是将焦点重新设置在他们选择的控件上,并在第一次按键时选择所有要删除的文本。这就是我认为可以解决问题的方法。

Product product = ViewModel.Products
  .FirstOrDefault(item => item.LookUp == ProductCode.Text);
if (product == null)
{
  ProductCode.Focus();
  ProductCode.SelectAll();
  return;
}
...

当文本框失去焦点时执行上述操作。但是,它似乎反复调用自己(因为断点一直被重新命中)最终导致错误非常类似于该站点的名称。

我也尝试跳过重新聚焦,只选择所有文本。但是,似乎无论如何都没有选择所有文本。

我应该怎么做?

【问题讨论】:

  • 这是事件处理代码吗?
  • @SimpleVar 是的。我使用 XAML 标记调用该方法 LostFocus.

标签: c# wpf xaml textbox


【解决方案1】:

订阅PreviewLostKeyboardFocus 获取文本框,当键盘不再关注此元素时出现。将 e.Handled = true 设置为验证失败,以便丢失焦点事件不会向下隧道。

Product product = ViewModel.Products
  .FirstOrDefault(item => item.LookUp == ProductCode.Text);
if (product == null)
{
  e.Handled = true;
  ProductCode.SelectAll();
  return;
}
...

【讨论】:

  • 非常清楚地解释和举例说明。为此 +1。
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2023-03-18
  • 1970-01-01
  • 2022-01-22
  • 2010-10-30
相关资源
最近更新 更多