我的代码看起来像这样:
class MyUserControl : Control { ... protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e) { base.OnGotKeyboardFocus(e); StartDoingSomethingRisky() } protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e) { base.OnLostKeyboardFocus(e); StopDoingSomethingRisky(); }
我是否应该担心,在某些情况下,即使在MyUserControl消失后,我仍可能继续进行危险的操作,或者我是否覆盖了100%的病例?
解决方法
我唯一能看到错误的是你没有检查哪个元素“丢失”了焦点.
从http://msdn.microsoft.com/en-us/library/system.windows.uielement.lostkeyboardfocus.aspx开始:
由于此事件使用冒泡路由,因此失去焦点的元素可能是子元素,而不是实际附加事件处理程序的元素.检查事件数据中的Source以确定失去焦点的实际元素.
如果你在特定元素获得焦点时发生了某些事情,并且当它失去焦点时停止发生,那么你将需要检查传入的args以查看调用该事件的内容.
希望有所帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。