1

我已经尝试编辑它以区分 tabControl 上的“选项卡”和使用 Tab 键通过控件的“选项卡”,但我只是要通电并希望含义清楚......

我有一个带有选项卡控件界面的 ac# 项目。3 个标签页(个人信息、联系人详细信息、附加说明)和相关控件包含在每个标签中。

我们的大多数用户发现仅使用键盘导航界面更容易(例如键盘快捷键和导航控件的选项卡)。我已经包含了各种快捷键组合的键盘监听器。例如,PageUp 和 PageDown 将允许用户翻阅各个选项卡。

然而,这些用户在输入信息时遵循相同的模式:一旦他们通过 PersonalInformation 选项卡的控件(根据需要填充)并到达选项卡上的最后一个控件,他们希望“保持选项卡”。如:当最后一个控件聚焦于 TabControl.Page1 时,用户按下 Tab 键会将焦点移动到 TabControl.Page2 上的第一个控件。当最后一个控件聚焦于 TabControl.Page2 时,用户按下 Tab 键会将焦点移至 TabControl.Page3。

通过这种方式,信息被分组并包含在一起,用户可以简单地继续键入和 Tab 键来输入表单上的所有信息,而无需使用键盘。

所以真正的问题是有效地做到这一点:我不能简单地处理最后一个控件的 OnLeave:用户(在最后一个控件上)选择较早的控件(甚至 shift-Tab)也会触发事件。

另一个问题是维护:如果维护者忘记/不知道这个“将焦点移到下一个选项卡”功能,在选项卡底部添加另一个控件可能会导致整个事情失败。也许将最后一个控件添加到表单中?

4

1 回答 1

0

我重写了 ProcessDialogKey 方法来处理 Tab(和 Shift+Tab)击键,将 tabPages 和焦点转移到相关控件。从功能上讲,这将起作用。

维护问题

  • 这个特定的界面不会经常更改,并且仍在进行大量的可用性测试以确定在它发布之前最有效的方法(因此我们最终可能会恢复)。

  • 坏事是转移焦点是相当硬编码的。我没有看到任何特别简单的方法来处理这个问题。

  • 幸运的是,维护应该很低,因为只有 3 个标签页。业务逻辑完全封装在其他地方,因此业务功能没有风险。代码包含在相关区域内,因此很容易发现。由于用户是“键盘爱好者”,并且在数据输入期间通过标签浏览所有内容,因此发现错误也是一件非常快的事情。

    仍然欢迎任何意见/建议。

  • 于 2011-01-19T14:53:55.413 回答