[英]Move focus to next control from UserControl
我正在使用UserControl以及其他一些控件。 我想设置一个键盘快捷键(如Ctrl + Tab )将焦点更改为窗口上的下一个控件,而忽略UserControl内部的所有其他控件。
我正在尝试像这样访问父属性:
FrameworkElement element = (FrameworkElement)this.Parent;
然后从中发出TraversalRequest或类似的内容。 我不确定该怎么办。
那么,将焦点从UserControl内部移动到屏幕上的下一个控件的正确方法是什么?
有几种方法可以做到这一点。 您可以在链接页面的KeyDown
或PreviewKeyDown
事件处理程序中使用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.