【问题标题】:WinForm - TabStop Not WorkingWinForm - TabStop 不工作
【发布时间】:2011-04-03 08:57:46
【问题描述】:

我有一个带有 3 个组合框的 WinForm,一个带有组合框,两个带有单选按钮。我将它们及其子控件都设置为“TabStop = false”,但是当我使用 TAB 循环时,最后两个组框中的当前选中的单选按钮都会获得焦点。

如果没有办法改变这种行为,那么什么是捕捉并将焦点移开的好事件?我找不到“OnFocus”事件。


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

实际上,我只为第一个组框的单选按钮做了它并且它有效,第二个组框的单选按钮没有获得焦点,即使它们的“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);

【问题讨论】:

  • @Robaticus,问题以“我有一个 WinForm...]”开头
  • 我编辑了这个问题以回应 Robaticus 的问题。问题是我的浏览器不再使用 StackOverflow 站点。我只能编辑已经发布的问题,但不能发布新问题或添加 cmets(现在使用 Firefox)。
  • 您可能被限制了。当您从不接受答案时会发生这种情况:)
  • @Muhammid:实际上,当我发表评论时,文本“a winform with”并不存在。随后对其进行了编辑以包含该文本。查看版本历史记录。
  • @Hans:在我对 Muhammad 的评论中,我提到我使用 Firefox 能够添加评论,那么您如何从浏览器问题转变为“节流”问题?让我们不要偏离轨道。

标签: c# winforms radio-button groupbox tabstop


【解决方案1】:

在 RadioButton 上将 TabStop 设置为 False 以防止在控件上切换选项卡,直到您实际选择了该单选按钮,而没有像 @msergeant 建议的那样进行任何额外的覆盖。

编辑

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

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

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

【讨论】:

  • 感谢您的信息。我仍然认为这不是预期的行为,如果设置为 TabStop = false (就像其他控件一样),单选按钮不会关注 TAB 按键的预期行为。
  • 感谢您的评论让我对您的问题和我的回答有了更多思考。
  • 感谢您抽出宝贵时间。我比较了这两个事件,“Enter”事件似乎是正确的:“当控件成为窗体的活动控件时发生。” vs "每当 'checked' 属性更改值时发生。"使用 TAB 键循环浏览控件时,单选按钮的“选中”属性不会改变,它们只会获得焦点。
  • 哇...我已经把头发扯了一个小时了,这很好地解决了我的问题!
【解决方案2】:

RadioButton.TabStop 的 MSDN 文档声明“此 API 支持 .NET Framework 基础结构,不能直接从您的代码中使用”。这基本上意味着,“这不会像你期望的那样工作”。

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

【讨论】:

  • 是的,几分钟前就看到了,我希望 TabStop 可以工作,它看起来更优雅,而且只有单选按钮不起作用,其他控件可以。
猜你喜欢
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多