阻止WPF文本框失去焦点

Mar*_*arl 7 wpf textbox focus

我有一个WPF Textbox,我想在我允许它丢失键盘/焦点之前检查文本值是否正确.

我已经尝试在InputBox_LostFocus&InputBox_LostKeyboardFocusevents中设置e.Handled ,但它似乎没有达到我想要的效果.

关于如何锁定焦点的任何建议Textbox

小智 8

执行此操作的最佳方法是处理PreviewLostKeyboardFocus事件,该事件在事件隧道传输到文本框时触发.将句柄设置为true,其他任何内容都不会收到通知(意味着焦点不会从文本框中转移).希望这可以帮助.


Ara*_*and 4

您可以Mouse.Capture致电UIElement. 然后,这将为您提供无论是否在元素上发生的每个鼠标事件。但使用起来很棘手。您可以捕获文本框上的鼠标并注册丢失的捕获事件,当您丢失捕获时,您可以重新捕获。你必须留意奇怪的行为。一般来说(我认为)不允许用户离开场地是不好的做法。更好的是允许他们做任何他们想做的事情,但在输入数据后禁用他们按下的按钮,直到所有字段都有效(或类似的东西)

这是一些链接

其他问题

msdn示例代码

组合框使用鼠标捕获来判断用户是否单击了应用程序中的其他位置以关闭组合框(如果您单击另一个控件(或窗口外部)则组合框打开)

我不知道这种技术是否会阻止您关闭该元素。wpf 应用程序中有两种焦点。您拥有逻辑焦点和键盘焦点。多个元素可以同时具有逻辑焦点(每个元素都在焦点范围内)。例如,当您单击菜单(也具有逻辑焦点)时,文本框可以具有逻辑焦点。键盘焦点一次只能位于一处。你将为自己做很多工作。我会认真考虑您是否以正确的方式进行互动。您可能需要花费数天时间才能正确完成此交互。如果您阻止文本框失去焦点,那么当用户单击关闭按钮时会发生什么?

这是关于焦点的 msdn 文章