我有GroupBox
一堆RadioButtons
。当他们有焦点时,我可以使用键向上/向下来迭代它们。
但是当我手动更改选中RadioButton
并按向上/向下键时,迭代会从更改选中RadioButton
之前的点开始。问题是:
答案:
要处理TAB,ESC,RETURN或ARROW按钮KeyDown
的事件,您需要覆盖控件的IsInputKey
方法。或覆盖ProcessCmdKey
而不是KeyDown
。
答案:
除了设置radioButton.Checked = true
。您需要关注它 - radioButton.Focus()
。
实施例: 我有6组RadioButtons(0-5)。
答案 0 :(得分:2)
什么事件对应于上/下键点击RadioButton
?
没有事件对应于您可以在不释放但仍处理关键命令的情况下按键的个人RadioButton
。但是,您可以覆盖表单从ProcessCmdKey
继承的Form
方法:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
Console.WriteLine("123");
return false;
}
如何访问RadioButton
组的内部索引器?
TabIndex
财产。 个人RadioButton
没有内部索引。但是,因为您将它们放在GroupBox
Control
上,并且具有名为Controls
的继承属性是它的子控件的集合。
示例中出现的问题出现了TabIndex
的问题。
Control
是WinForm应用程序的大多数可视组件的基类。它有一个父/子层次结构,你放在RadioButton
上的所有GroupBox
都有相同的父级,而GroupBox
本身拥有这些RadioButton
s,并拥有属性Controls
,您可以通过索引访问它们。
答案 1 :(得分:1)
好的,当用户按下向上/向下按钮时,他/她只是将焦点移动到单选按钮上。所以你只需要调用按钮的方法Focus()
,你只需将check属性设置为true
答案 2 :(得分:0)
您可以像这样获得所选的单选按钮:
RadioButton checkedButton = Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);
你可以将checkChanged事件添加到所有的radiobuttons。
这将获得所选单选按钮的索引:
int index = groupBox1.Controls.IndexOf(groupBox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked));
这将选择一个特定的索引:
groupBox1.Controls.OfType<RadioButton>().ElementAtOrDefault(index).Select();