在WPF的TextBox的LostFocus事件中直接使用Focus()方法会出现死循环的问题

正确的使用方式有2中方法:

方法一:

privatevoidtextBox3_LostFocus(objectsender, RoutedEventArgs e)

{if(textBox3.Text!="abc")

{this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Render,newAction(()=>{

textBox3.Focus();

}));

}

}

方法二,使用LostKeyboardFocus方法:

privatevoidtextBox3_LostKeyboardFocus(objectsender, KeyboardFocusChangedEventArgs e)

{if(textBox3.Text!="abc")

{

textBox3.Focus();

}

}

说明:在msdn上就查找到:

LostKeyboardFocus

在键盘焦点不再位于此元素上时发生

LostFocus

在此元素失去逻辑焦点时发生

IsFocused

获取一个值,该值确定此元素是否具有逻辑焦点

Focus

尝试将焦点设定到此元素上

如果键盘焦点和逻辑焦点同时设定到此元素上,则为 true;如果只有逻辑焦点设定到此元素上或此方法调用未强制更改焦点,则为 false

补充说明:

在 WPF 中,有两个与焦点有关的主要概念:键盘焦点和逻辑焦点。

键盘焦点指接收键盘输入的元素,而逻辑焦点指焦点范围中具有焦点的元素。

具有键盘焦点的元素也将具有逻辑焦点,但具有逻辑焦点的元素不一定具有键盘焦点。

键盘焦点指当前正在接收键盘输入的元素。 在整个桌面上,只能有一个具有键盘焦点的元素。

逻辑焦点指焦点范围中的 FocusManager.FocusedElement。

焦点范围是一个跟踪其范围内的 FocusedElement 的元素。

当键盘焦点离开焦点范围时,焦点元素会失去键盘焦点,但保留逻辑焦点。 当键盘焦点返回到焦点范围时,焦点元素会再次获得键盘焦点。

就以上解释来说,当我们离开某个应用程序而切换到另外的可输入的应用程序,那么我们的程序将失去键盘焦点而保留逻辑焦点

当再次切换回来的时候,重新获得键盘焦点

这样,我建议使用第一种方式来解决办法,这样可以减少当程序切换时无畏的失去键盘焦点的验证

wpf使某个控件失去焦点_WPF 在TextBox失去焦点时检测数据,出错重新获得焦点解决办法...相关推荐

  1. wpf使某个控件失去焦点_WPF的TextBox的焦点获取与失去焦点的死循环解决方案

    在WPF中实现一个弹出层自动获取焦点,弹出层实现是通过其UserControl的依赖属性Visibility的绑定实现的,让UserControl上的TextBox获取焦点,初始实现代码如下: pub ...

  2. WPF之DataGrid控件使用

    WPF之DataGrid控件使用 一.DataGrid简介 二.DataGrid数据源绑定 三.DataGrid单元格编辑触发事件 四.DataGrid增加删除行 五.DataGrid数据触发器 参考 ...

  3. WPF 自定义DataGrid控件样式

    WPF 自定义DataGrid控件样式 样式一: 样式代码: <!--DataGrid样式--><Style TargetType="DataGrid">& ...

  4. WPF的Popup控件使用

    WPF控件学习总结系统系列 文章目录 WPF控件学习总结系统系列 前言 一.使用场景 二.使用步骤 1.前端界面 2.属性说明 展示效果 总结 参考学习出处 前言 WPF使用popup控件实现弹出式提 ...

  5. WPF查找子控件和父控件方法

    原文:WPF查找子控件和父控件方法 public List<T> GetChildObjects<T>(DependencyObject obj, string name) w ...

  6. WPF 动画显示控件

    原文:WPF 动画显示控件 当我们要显示一个控件的时候,不仅仅要显示这个控件,还要有动画的效果. 主要用到了DoubleAnimation类. public static void ShowAnima ...

  7. WPF的Timer控件的使用

    原文:WPF的Timer控件的使用 通过System.Threaing.Timer控件来实现"初始加载页面时为DataGrid的模版列赋初始值" System.Threaing.T ...

  8. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...

  9. WPF之复杂形状控件

    WPF之复杂形状控件 原文:WPF之复杂形状控件 有的时候想将一张图片变成一个按钮.当然这里不是单纯讲图片作为按钮的背景. 这两者是有区别的: 前者图片即按钮,比如你有一个空心的圆圈,当你点击中间空心 ...

最新文章

  1. 如何在Swift中串联或合并数组?
  2. Touch UI:高质量的移动端UI框架介绍
  3. redis 2m数据读取_Flink读写Redis(二)读取redis数据
  4. 微信云服务器有效期,关于云存储文件有效期问题总结
  5. resnet18 结构
  6. mac vscode debug安装调试moodle
  7. (php毕业设计)基于php旅游信息网站管理系统源码
  8. ios 画带有箭头的线_iOS 箭头类型视图的几点心得
  9. DDR 参数 内存延迟时序“CL-tRCD-tRP-tRAS”
  10. 家用计算机音效部件图示,唱吧新版自定义音效设置方法(附上最佳音效设置参数图)...
  11. 安装Vista与XP双系统后如何做好备份
  12. 一天看10000张黄图,鉴黄师的苦!!!
  13. Chrome 改进 Enhanced Safe Browsing 功能,强化扩展程序和文件下载安全性
  14. 【Android】Android SurfaceFlinger之BufferQueue
  15. 酒店管理系统-毕业设计
  16. linux ln 软连接_ln命令建立软链接
  17. PHP有没有 原子性,PHP程序的原子性和PHP的文件锁
  18. html首页问候语,每日一条问候语
  19. STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解
  20. 关于fork()函数的作用

热门文章

  1. 倍福--通过示波器读取IO信号
  2. linphone录音分析
  3. echarts监控dataview数据视图的关闭按钮事件
  4. 全国计算机等级考试(NCRE)一级报考指南
  5. 结构流体多物理场耦合高性能仿真计算集群配置推荐
  6. 114.Livy配置
  7. NISP国家信息安全水平考试,收藏这一篇就够了
  8. Python数据分析必知必会——TGI指数
  9. Labview 机器视觉(3)之 图像处理基础 - 操作和保存
  10. return o1-o2是升序的原因