首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinForm - TabStop不工作

WinForm - TabStop不工作
EN

Stack Overflow用户
提问于 2010-08-24 19:12:49
回答 2查看 6.3K关注 0票数 4

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

如果没有办法改变这种行为,什么是好事件来捕捉和转移焦点?我找不到"OnFocus“事件。

解决方案是设置一个方法(下面的代码)来处理表单中每个单选按钮的"Enter“事件(如果这是您希望的话)。

实际上,我只为第一个组框的单选按钮做了这个工作,第二个组框的单选按钮没有获得焦点,即使它们的“进入”事件没有被处理。这不是你所期望的行为。

代码语言:javascript
复制
private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

在*.Designer.cs文件中,您编辑每个Enter事件(针对每个单选按钮),以指向一个事件处理程序(上面的方法)。

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-25 16:40:54

RadioButton.TabStop的MSDN文档声明“此API支持.NET框架基础设施,不打算直接从您的代码中使用”。这基本上意味着,“这不会像你期望的那样起作用”。

这样,Enter事件将在按钮收到焦点时触发。您可以尝试使用它将焦点移动到另一个控件。

票数 5
EN

Stack Overflow用户

发布于 2010-08-25 17:00:47

将TabStop设置为RadioButton上的False,以防止将选项卡显示到控件上,直到您实际选择单选按钮而不像@m警长所建议的那样进行任何额外的重写。

编辑

以下代码阻止代码获取选项卡键事件:

代码语言:javascript
复制
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3560129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档