Winform- tabstop不起作用
-
01-10-2019 - |
题
我有一个带有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;
}
无线电按钮相对于其他控件的选项卡的行为有所不同,因为它们基于设置选项卡索引或放置在组中,然后在组框中放置按钮在集合或组中工作。
不隶属于 StackOverflow