我遇到了一个我确定其他人已经遇到并解决的问题。在我申请的几个地方,我有'网格'。更具体地说是Infragistic的UltraWinGrid - 但是想法是,在网格内按 Tab 将你移动到网格中的下一个单元格。当您位于行的最后一个单元格中时,按 Tab 将移动到下一行。如果您位于最后一行的最后一个单元格中,按 Tab 将移动到新行。
问题是表单不仅仅包含一个网格。在某些时候 - 你想要标记'out'到该网格并移动到下一个控件。
我认为使用键盘快捷键来提供这种替代 Tab 行为是有意义的......但似乎所有选项都已被采用。
Shift + 标签 =标签向后
Ctrl + Tab =应用程序中的窗口之间的选项卡(我们有MDI子项,什么不是,所以我们不想更改此内容)
Alt + Tab =更改应用程序的Windows快捷方式
Windows密钥 + 标签 =与上面的GUI相同
在没有无限行数的网格中 - 我可以制作一个常规标签,将它们移出网格。但在这种情况下,网格没有结束。
有没有人对如何解决此问题有任何建议/提示?我真的希望能够让我们的用户完全无需触摸鼠标即可浏览应用程序。
答案 0 :(得分:1)
“无限”行数是什么意思...当你走到最后时,会在这个网格中标记,只是不断创建新的空行。
你可以测试它们是否在最后一个新行的最后一个单元格中按 Tab ,如果是,则.Focus()是winForm上的下一个控件。或者,您可以完全捕获 Tab 作为控件导航键,让他们使用箭头键在Grid中导航。
答案 1 :(得分:1)
您认为让用户了解此键盘快捷键的可能性是什么?
也许 Alt + Shift + Tab (它在我手中运作良好)。
但是,如果不对用户进行测试,则不应做出此类决定。这将为您提供两个输出A)您可以看到这是否是您的用户实际会做的事情,以及B)您可能能够教您的用户群。
答案 2 :(得分:1)
如果在表单类型控件(例如,文本框,组合框)中有一个网格集,则可以使用 Esc 将网格切换到其中一个表单控件,或者第一个控件或最后一个控件。
如果您有多个网格(或多个窗格), Esc 可以将焦点作为一个整体放在当前网格/窗格上。 Tab 和 Shift + Tab 在网格/窗格之间移动焦点。其他键提供操作窗格的快捷方式(例如,打开,关闭,调整大小,列选择)。当焦点位于整个窗格/网格上时,按 Esc 会将焦点重新放回网格/窗格中。
在任何一种情况下,我仍然使用 Ctrl + Tab 和 Shift + Ctrl + Tab 可以移入和移出网格或网格之间以及MDI中的窗口。本质上,将每个窗口中的网格(或窗格)视为“窗口中的窗口”。如果窗口的相关性与窗口中的网格相关(例如,所有显示数据对象,相互关联)。如果用户在网格中,则 Ctrl + Tab 移出网格但仍保留在窗口中(或移动到该窗口中的下一个网格/窗格)。一旦用户用完了要在窗口内移动的位置, Ctrl + Tab 将移动到下一个窗口(或该窗口中的第一个窗格/网格)。