我有一个处理TextBox的PreviewLostKeyboardFocus
事件。当我使用键盘(Tab键)或鼠标(通过单击表单上的另一个TextBox)离开文本框时它会触发。用户是否使用键盘或鼠标离开WPF文本框?
该处理程序需要一个KeyboardFocusChangedEventArgs
,它有一个名为KeyboardDevice
的属性,在任何一种情况下(我希望在使用鼠标时都可以在这里找到null
)都不为空。
问题:如何判断用户是使用键盘还是鼠标离开WPF文本框?
我有一个处理TextBox的PreviewLostKeyboardFocus
事件。当我使用键盘(Tab键)或鼠标(通过单击表单上的另一个TextBox)离开文本框时它会触发。用户是否使用键盘或鼠标离开WPF文本框?
该处理程序需要一个KeyboardFocusChangedEventArgs
,它有一个名为KeyboardDevice
的属性,在任何一种情况下(我希望在使用鼠标时都可以在这里找到null
)都不为空。
问题:如何判断用户是使用键盘还是鼠标离开WPF文本框?
的e.KeyboardDevice.GetKeyStates(Key.Tab)(其中e是类型KeyboardFocusChangedEventArgs的)报告:
会为你工作?
今天我也有这个想法,但认为可能存在计时问题,因为您在这里有两个不同的事件。此处的另一个评论也表达了同样的观点:在90%的情况下,这取决于在按键被按下时是否触发事件。我不会依赖那个。 – ygoe 2012-07-30 07:54:49
如果焦点离开控件,因为其他控件抓住焦点[在代码](http://msdn.microsoft.com/en-us/library/system.windows.uielement.focus.aspx)? – Vlad 2011-06-14 13:59:11
设置按键侦听程序并检测选项卡是否被按下不是更好吗?如果选项卡按下,则可以相应地作出响应,否则就会假设它们以其他方式离开,例如通过鼠标。我不熟悉WPF,但在许多UI库中,您可以捕获Tab键,并覆盖它的操作。我猜你实际上想要将一个标签插入文本区域,而不是离开去下一个字段。 – Kibbee 2011-06-14 14:09:05
我同意Kibbee在这里:如何为Tab键添加一个'EventHandler',或者如果调用例如 – Damascus 2011-06-14 14:20:23