当前位置: 首页 > 编程语言 > C#

Shift+Tab在TreeView控件中不起作用分享

时间:2023-04-10 14:04:41 C#

Shift+Tab在TreeView控件中不起作用从TreeBox中的TextBox跳转到TextBox。任何时候您使用Shift+Tab,TreeView中的一个TextBox,然后焦点移动到TreeView外的上一个控件,而不是TreeView中的上一个控件。此外,它唯一的Shift+Tab导航不起作用,Ctrl+Shift+Tab按预期和正确的顺序工作。关于我做错了什么的任何建议?示例代码:如果您使用ILSpy/Reflector查看TreeView.OnKeyDown处理程序,您可以看到问题的原因。按下Shift+Tab时,TreeView有特殊处理。相关代码为:Keykey=e.Key;if(key!=Key.Tab){//...}else{if(TreeView.IsShiftKeyDown&&base.IsKeyboardFocusWithin&&this.MoveFocus(newTraversalRequest(FocusNavigationDirection.Previous))){e.Handled=true;返回;不幸的是,您需要使用自定义TreeView类来解决这个问题。像这样的作品:publicclassMyTreeView:TreeView{protectedoverridevoidOnKeyDown(KeyEventArgse){if((Keyboard.Modifiers&ModifierKeys.Shift)!=0&&e.Key==Key.Tab)return;base.OnKeyDown(e);您不必使用继承自TreeView的自定义类:treeView.PreviewKeyDown+=this.HandleTreeView_PreviewKeyDownwith:privatevoidHandleTreeView_PreviewKeyDown(objectsender,KeyEventArgse){if(e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Shift))&&e.Key==Key.Tab){varfocusedElement=Keyboard.FocusedElement;如果(focusedElement!=null){focusedElement.MoveFocus(FocusNavigationDirection.Previous,1);}e.Handled=true;}}也可以正常工作。使用此解决方案,您可以创建自定义行为并将其附加到TreeView。以上就是C#学习教程的全部内容:Shift+Tab在TreeView控件中不起作用。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: