我有一个带有3个组盒的Winform,一个带有组合盒,两个带有无线电按钮的盒子。我将所有这些都设置为“ tabstop = false”,但是当我使用选项卡循环时,最后两个组框中的每个框中的每个单选按钮都聚焦。

如果无法改变这种行为,那么将重点移开并将焦点移开的好事件是什么?我找不到“ onfocus”事件。


解决方案是设置一种方法(下面的代码)来处理表单中每个广播按钮的“输入”事件(如果您希望的话)。

实际上,我只为第一个组框的无线电按钮进行操作,它可以使用,即使没有处理“ Enter”事件,第二组盒子的无线电按钮也不会得到焦点。这不是您期望的行为。

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

在 *.designer.cs文件中,您要编辑每个Enter Enter事件(对于每个广播按钮),以指向一个事件处理程序(上述方法)。

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
有帮助吗?

解决方案

MSDN文档 radiobutton.tabstop 指出“此API支持.NET框架基础架构,并且不打算直接从您的代码中使用”。这基本上意味着:“这不会奏效您的期望”。

话虽如此,当按钮接收到焦点时,Enter事件将开火。您可以尝试使用它将焦点移至另一个控件。

其他提示

将TabStop设置为radiobutton上的false,以防止对控件的tabing起作用,直到您精心地选择“无线电”按钮而无需任何其他替代,例如@smsergeant的建议。

编辑

以下代码可防止代码获取选项卡密钥事件:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

无线电按钮相对于其他控件的选项卡的行为有所不同,因为它们基于设置选项卡索引或放置在组中,然后在组框中放置按钮在集合或组中工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top