【问题标题】:Mixed radio buttons and text boxes: What is the sane way to navigate with a keyboard?混合单选按钮和文本框:用键盘导航的合理方法是什么?
【发布时间】:2015-02-20 21:28:01
【问题描述】:

我有一个 windows 窗体,如下所示。某些单选选项在按下按钮之前需要额外的信息(2 和 3),而有些则不需要。

问题是这样的:这应该如何用键盘导航?

默认行为是:

  • 焦点在 radioButton1
  • 向下箭头转到 radioButton2
  • 向下箭头再次转到... textbox1

此时,向下箭头无处可去。 Tab 将转到 textbox2,然后是 button1。

radioButton3 无法通过键盘访问

从选项卡排序中排除 textbox1 和 textbox2 (TabStop = False) 使 radioButton3 可访问,但现在文本框不再可访问。

我试过了:

  • 从标签排序中排除 textbox1 和 textbox2(现在它们无法访问)
  • 在 textbox1 中捕捉向下箭头并将焦点移动到 radioButton3(这感觉非常错误,并且会让人头疼)。
  • 除非选中相应的单选框,否则禁用 textbox1 和 textbox2。 (不,这实际上使事情变得更糟)

我不想考虑的:

  • 按钮后出现所需文本的提示。 (听起来很笨拙)
  • 单选按钮下方的单个文本框。 (在这个应用程序中,文本框都有不同的验证,所以很痛苦)。
  • 需要鼠标(不是选项)

处理这个问题的正确方法是什么?

【问题讨论】:

  • 想要向下箭头键循环浏览控件的顺序是什么?一种方法是覆盖ProcessCmdKey,只让箭头键在单选按钮之间移动,然后当您选择一个有文本框的按钮时,自动将光标放在其中。
  • 我本来希望(并且希望)箭头继续穿过单选按钮,而不是突然像在第二个按钮之后按下了一个选项卡。

标签: windows winforms user-interface


【解决方案1】:

为 radioButton1 到 radioButton4 设置 TabIndex,使它们从 0(零)变为 3。

为 textBox1 和 textBox2、4 和 5 分别设置 TabIndex

按钮应该是TabIndex 6。

现在可以使用向上/向下箭头导航单选按钮,并且您可以从文本框通过按钮切换并返回单选按钮。

*如果您首先放置所有 RadioButtons,然后是 TextBoxes,然后 TabIndexes 将以这种方式设置。您最初可能按以下顺序放置控件:radioButton1、radioButton2、textBox1、radioButton3、textBox2、radioButton4、button1

【讨论】:

  • 这确实可以访问所有控件,但是要访问单选按钮的相应文本框似乎有点不对劲......跨度>
  • 同意;这很奇怪。 ...但我认为,如果您确实想要将代码添加到组合中,这是“正确”的方法。
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 2012-07-07
  • 2018-12-07
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多