【发布时间】:2012-02-19 23:15:26
【问题描述】:
在 WPF 应用程序中,我有一个包含很多字段的窗口。 当用户在填写每个字段后使用 TAB 键时,windows 会理解它会继续下一个。这是众所周知的行为。
现在我想做的是让它模拟 TAB 键,而实际上 RETURN 被击中。
所以在我的 WPF xaml 中,我添加了 imply KeyDown="userPressEnter"
在它背后的代码中:
private void userPressEnter(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
e.Key = Key.Tab // THIS IS NOT WORKING
}
}
现在,显然这不起作用。但我不知道的是,我该怎么做呢?
编辑 1 ==> 找到解决方案
我发现了一些对我有帮助的东西 =)
private void userPressEnter(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next);
MoveFocus(request);
}
}
这样,焦点会移动到它可以找到的下一个:)
【问题讨论】:
-
模拟选项卡是指将光标移动到窗口中的下一个字段吗?
-
是的,将其移至下一个处理程序,以便它可以是字段或按钮。所以模拟与用户点击 TAB 相同的行为。这就是为什么我只是尝试为系统提供 TAB 输入,而实际上按下了 RETURN。
-
您的解决方案的问题:您需要将其添加到每个控件中,否则 MoveFocus 将无法选择正确的下一个字段。