我有一个带有3个组框的WinForm,一个带有组合框,两个带有单选按钮。我将所有这些控件和它们的子控件设置为"TabStop = false",但是当我使用TAB循环时,最后两个组框中当前选择的单选按钮就会聚焦。
如果没有办法改变这种行为,什么是好事件来捕捉和转移焦点?我找不到"OnFocus“事件。
解决方案是设置一个方法(下面的代码)来处理表单中每个单选按钮的"Enter“事件(如果这是您希望的话)。
实际上,我只为第一个组框的单选按钮做了这个工作,第二个组框的单选按钮没有获得焦点,即使它们的“进入”事件没有被处理。这不是你所期望的行为。
private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
SomeOtherControl.Focus();
}在*.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);发布于 2010-08-25 16:40:54
RadioButton.TabStop的MSDN文档声明“此API支持.NET框架基础设施,不打算直接从您的代码中使用”。这基本上意味着,“这不会像你期望的那样起作用”。
这样,Enter事件将在按钮收到焦点时触发。您可以尝试使用它将焦点移动到另一个控件。
发布于 2010-08-25 17:00:47
将TabStop设置为RadioButton上的False,以防止将选项卡显示到控件上,直到您实际选择单选按钮而不像@m警长所建议的那样进行任何额外的重写。
编辑
以下代码阻止代码获取选项卡键事件:
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
radioButton1.TabStop = false;
}单选按钮对于Tab的行为与其他控件不同,因为它们基于设置选项卡索引或将单选按钮放置在组框中而在集合或组中工作。
https://stackoverflow.com/questions/3560129
复制相似问题