繁体   English   中英

将焦点从UserControl移至下一个控件

[英]Move focus to next control from UserControl

我正在使用UserControl以及其他一些控件。 我想设置一个键盘快捷键(如Ctrl + Tab )将焦点更改为窗口上的下一个控件,而忽略UserControl内部的所有其他控件。

我正在尝试像这样访问父属性:

FrameworkElement element = (FrameworkElement)this.Parent;

然后从中发出TraversalRequest或类似的内容。 我不确定该怎么办。

那么,将焦点从UserControl内部移动到屏幕上的下一个控件的正确方法是什么?

有几种方法可以做到这一点。 您可以在链接页面的KeyDownPreviewKeyDown事件处理程序中使用TraversalRequest

// Creating a FocusNavigationDirection object and setting it to a 
// local field that contains the direction selected.
FocusNavigationDirection focusDirection = _focusMoveValue;

// MoveFocus takes a TraveralReqest as its argument.
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);
}

或者,您可以只在处理程序中使用UIElement.Focus方法

particularControl.Focus();

甚至更简单...如果您只是在每个希望用户能够集中到False控件上设置Control.IsTabStop属性 ,则不需要任何事件处理程序:

<TextBox Name="NotTabStop" IsTabStop="False" ... />

然后,用户将能够像平常一样使用Tab键移动到下一个控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM