我已经为我的应用程序制作了一个自定义的消息框,它作为UserControl
启动。我里面有两个按钮,我想允许用户按 Tab 键在Buttons
之间切换。但是,由于它是覆盖内容UserControl
,因此按 tab 两次以上会使焦点在后台转到不应该被选项卡化的元素上。
我想不出一个好主意如何防止这种情况,我想过制作一种方法,可以选择所有元素并将其IsTabStop
值设为 false,然后稍后恢复它们,但我认为这将是一个更大的问题而不是解决方案。
有没有办法解决这个问题,将制表符限制在UserControl
?
我也非常感谢有关使用消息框的建议..整个消息框是一个异步函数,在给出答案之前具有不定式循环。有没有其他方法可以停止应用程序,直到选择其中一个消息框选项?
Crowcoder 的引用导致了正确的 MSDN 页面,我在其中找到了我的解决方案:
dialog = new UCMessageBox("Are you sure you want to exit the application?", MBType.YesNo);
AppMessageBox.Children.Add(dialog);
KeyboardNavigation.SetTabNavigation(dialog, KeyboardNavigationMode.Cycle);
关键是调用.SetTabNavigation
函数并将其定向到我的对话框(消息框的自定义UserControl
)并将KeyboardNavigationMode
设置为Cycle
。
关闭UC后,应用程序的其余部分继续正常导航。