WinForm - TabStop不工作

OIO*_*OIO 3 c# groupbox tabstop radio-button winforms

我有一个带有3个组合框的WinForm,一个带有组合框,另外两个带有单选按钮.我将所有这些和他们的子控件设置为"TabStop = false",但是当我使用TAB循环时,最后两个组框中每个组中当前选择的单选按钮会被聚焦.

如果没有办法改变这种行为,那么抓住并将焦点移开会有什么好事?我找不到"OnFocus"活动.


解决方案是设置一个方法(下面的代码)来处理表单中每个单选按钮的"Enter"事件(如果这是你想要的).

实际上,我只是为第一组组的单选按钮做了它并且它工作,第二组框的单选按钮没有得到焦点,即使他们的"Enter"事件没有被处理.这不是您期望的行为.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}
Run Code Online (Sandbox Code Playgroud)

在*.Designer.cs文件中,您可以编辑每个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);
Run Code Online (Sandbox Code Playgroud)

mse*_*ant 5

RadioButton.TabStop的MSDN文档指出"此API支持.NET Framework基础结构,不能直接在您的代码中使用".这基本上意味着,"这不会像你期望的那样发挥作用".

话虽如此,当按钮收到焦点时,Enter事件将触发.您可以尝试使用它将焦点移动到另一个控件.


Zam*_*oni 5

在RadioButton上将TabStop设置为False以防止对控件进行制表工作,直到您选择单选按钮而没有@msergeant建议的任何其他覆盖.

编辑

以下代码阻止代码获取Tab键事件:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}
Run Code Online (Sandbox Code Playgroud)

单选按钮与其他控件的Tab的行为不同,它们基于设置选项卡索引或在组框中放置单选按钮,在组或组中工作.