2009-04-28 161 views
1

我遇到了一个问题,我确定其他人已经解决了。在我的应用程序的几个地方,我有'网格'。更具体地说Infragistic的UltraWinGrid的 - 但想法是,在网格内按标签移动到网格中的下一个单元格。当您在一行的最后一个单元格中时,按标签将使您移动到下一行。如果您位于最后一行的最后一个单元格中,请按选项卡会将您移至新行。键盘快捷键'Tab Out'与无限行的网格?

问题是表单由多个网格组成。在某个时刻 - 您想要将该网格“拉出”并移至下一个控件。

我想它是有道理的使用键盘快捷键来提供这种替代标签行为....但它似乎像所有的选项都采取。

+ 标签 =标签向后

按Ctrl +标签=窗口之间的应用程序内标签(我们有MDI孩子并没有什么,所以我们不希望改变这一点)

Alt键 + 标签 = Windows快捷方式改变应用

Windows键+标签=同上一个新的GUI

在电网不具备行的数量不受限制 - 我可以做一个常规的制表他们搬离网格。但在这种情况下,电网没有终点。

有没有人有任何建议/提示如何解决这个问题?我真的希望能够让我们的用户在完全无需触摸鼠标的情况下导航应用程序。

回答

1

如果在窗体类型控件(例如文本框,组合框)之间设置了一个网格,则可以使用Esc将网格切换为其中一个窗体控件,即第一个控件或到最后一个有重点。

如果您有多个网格(或多个窗格),Esc可以将焦点放在当前网格/窗格上作为一个整体。 Tab and Shift + Tab在网格/窗格之间移动焦点。其他键提供快捷方式来操纵窗格(例如,打开,关闭,调整大小,选择列)。按焦点Esc焦点位于整个窗格上/网格将焦点放回到网格/窗格中。

在任何情况下,我还是会使用按Ctrl +标签+按Ctrl +标签和出网格或栅格之间移动,以及在Windows中MDI。本质上,将每个窗口中的网格(或窗格)视为“窗口中的窗口”。这对于窗口是否与窗口内的网格相关的方式相关是最有意义的(例如,所有显示数据对象彼此相关联)。如果用户位于网格中,则Ctrl + 选项卡移出网格,但仍保留在窗口中(或移至窗口中的下一个网格/窗格)。一旦用户用完了要去的窗口,Ctrl + 标签移动到下一个窗口(或窗口中的第一个窗格/网格)。

+0

我希望我能接受每个人的回答 - 因为在我的脑海里没有一个“正确”的答案,我已经用逃生的钥匙来实现这个解决方案,运气好的话,用户不会讨厌它。 – 2009-04-30 21:57:25

1

你是什么意思的“无限”的行数......当你走到最后时,在这个网格中做标签,只是不断创建新的空行。

当他们按标签时,您可以测试以查看它们是否在最后一个新行的最后一个单元格中,如果是,则为.Focus()winForm上的下一个控件。或者,您可以完全将标签作为控制导航键,并让他们使用箭头键在网格中导航。

+0

“如果您位于最后一行的最后一个单元格中,请按Tab键将您移动到新行。” 所以,我不认为我可以测试它们是否在最后一个新行的最后一个单元格中 - 因为在这种情况下,按下制表符应该创建一个新的新行并将它们移动到第一个单元格中那一排。 我喜欢使用箭头键导航网格单元格的想法 - 但是如果您键入“Cait”而不是猫,并且想要退回一个并打回退格,那么您将无法这样做。不知道这是否是一个交易断路器有趣的建议 – 2009-04-28 16:30:01

1

您认为您的用户知道此键盘快捷方式的可能性是什么?

也许Alt键 + + 标签(它运作良好,在我的手里)。

但是,您不应该在未经用户测试的情况下作出此类决定。这会给你两个输出A)你可以看到这是你用户实际上做的事情,B)你也许可以教你的用户群。

+0

Alt-Shift-Tab当然也在MS Windows中的应用程序窗口之间切换,只是按照Alt-Tab的相反顺序。 – 2009-04-29 11:38:36