阻止WPF文本框失去焦点

时间:2010-02-06 11:56:33

标签: wpf textbox focus

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

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

有关如何将焦点锁定到Textbox的任何建议?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

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

以下是一些链接

other SO question

msdn sample code

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

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

继承人msdn article on focus

相关问题