将 Tab 键限制为自定义窗口内消息框

本文关键字:窗口 消息 自定义 Tab | 更新日期: 2023-09-27 18:36:13

我已经为我的应用程序制作了一个自定义的消息框,它作为UserControl启动。我里面有两个按钮,我想允许用户按 Tab 键在Buttons之间切换。但是,由于它是覆盖内容UserControl,因此按 tab 两次以上会使焦点在后台转到不应该被选项卡化的元素上。

我想不出一个好主意如何防止这种情况,我想过制作一种方法,可以选择所有元素并将其IsTabStop值设为 false,然后稍后恢复它们,但我认为这将是一个更大的问题而不是解决方案。

有没有办法解决这个问题,将制表符限制在UserControl

我也非常感谢有关使用消息框的建议..整个消息框是一个异步函数,在给出答案之前具有不定式循环。有没有其他方法可以停止应用程序,直到选择其中一个消息框选项?

将 Tab 键限制为自定义窗口内消息框

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后,应用程序的其余部分继续正常导航。