作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的应用程序(一个带有 6 个按钮的网格 - 2 行 3 个 - 用于测试)并且我按如下方式处理左右箭头键
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
FocusNavigationDirection focusDirection = new System.Windows.Input.FocusNavigationDirection();
switch (e.Key)
{
case Key.Left:
focusDirection = System.Windows.Input.FocusNavigationDirection.Left;
break;
case Key.Right:
focusDirection = System.Windows.Input.FocusNavigationDirection.Right;
break;
default:
break;
}
TraversalRequest request = new TraversalRequest(focusDirection);
// Gets the element with keyboard focus.
UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
// Change keyboard focus.
if (elementWithFocus != null)
{
elementWithFocus.MoveFocus(request);
}
}
不幸的是,这并不像我预期的那样,因为焦点似乎总是朝着与 FocusNavigationDirection 指定的方向相反的方向移动。
有没有想过为什么会这样? MSDN Documentation关于如何定义“左侧”有点含糊。
如果需要,我还将每个按钮的制表位定义为 1 到 6。
最佳答案
为什么你需要获取 elementWithFocus 而你可以使用“this”(窗口自己的范围)?
我稍微修改了你的代码,它对我有用:
private void Window_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Left:
this.MoveFocus(FocusNavigationDirection.Previous);
break;
case Key.Right:
this.MoveFocus(FocusNavigationDirection.Next);
break;
default:
break;
}
}
private void MoveFocus(FocusNavigationDirection direction)
{
var request = new TraversalRequest(direction);
this.MoveFocus(request);
}
关于c# - WPF FocusNavigationDirection、MoveFocus 和箭头键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719116/
我有一个简单的应用程序(一个带有 6 个按钮的网格 - 2 行 3 个 - 用于测试)并且我按如下方式处理左右箭头键 private void Window_PreviewKeyDown(ob
PredictFocus()的原因是什么?不支持FocusNavigationDirection.Next ? 以及如何在点击 TAB 时让元素获得焦点? 最佳答案 只有 上/下/左/右 支持值。 下
我是一名优秀的程序员,十分优秀!