c# – GotFocus和GotKeyboardFocus之间的区别
GotFocus和GotKeyboardFocus之间有什么区别?和LostFocus和LostKeyboardFocus相似?
对于简单的问题,对不起,但是我已经搜索了很多博客文章,但我仍然感到困惑.似乎没有人知道有什么区别): 更新: 我的用法: 我通过扩展Control类来创建自定义控件.像ComboBox,但有一些其他的效果.我试图通过设置一个属性来打开和关闭一个Popup:IsDropDownOpen就像一个ComboBox通过GotFocus和LostFocus事件.我不想弹出窗口关闭,当我的Alt Tabed的窗口,但是当我点击一个按钮或者我去一个文本框时,关闭.我做到了 private static void OnGotFocusHandler(object sender,RoutedEventArgs e) { if (e.Handled) return; ((SearchBox)sender).IsDropDownOpen = true; e.Handled = true; } private static void OnLostFocusHandler(object sender,RoutedEventArgs e) { if (e.Handled) return; ((SearchBox)sender).IsDropDownOpen = false; e.Handled = true; } GotFocus工作.但失落的人没有.如果我在LostKeyboardFocus中做丢失的东西,那么当我的Alt Tab窗口,或者Window进入非活动状态时,该方法被调用,而我不想.我该如何解决? 解决方法
MSDN有一个焦点的概述,但我会尝试在这里解释.
WPF有两个关于焦点的概念.有物理键盘的焦点,有逻辑重点.只有一个元素可以具有键盘焦点(如果应用程序不是活动应用程序,则没有元素将具有键盘焦点). 多个项目可以具有逻辑重点.事实上,您可以创建新的“焦点范围”.根据MSDN:
您可以通过设置FocusManager.IsFocusScope =“True”,在元素(通常为Panel)上定义自己的焦点范围. WPF中的控件默认为焦点范围是Window,MenuItem,ToolBar和ContextMenu. 如果您考虑在应用程序中安装多个Windows,这是有道理的.当您之间的Alt-Tab,您期望您的键盘焦点返回到上一次窗口焦点的同一个地方.通过保持键盘焦点和逻辑焦点分开,您可以实现这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |