【问题标题】:Strange behaviour of radiobuttons with application settings带有应用程序设置的单选按钮的奇怪行为
【发布时间】:2013-12-01 12:45:56
【问题描述】:

我有一个带有两个单选按钮的表单,我使用 CheckedChanged 事件来显示信息。一切正常。

当我创建两个应用程序设置并将它们中的每一个绑定到每个单选按钮的 Checked 属性时,问题就出现了。这样做之后,单选按钮的行为开始变得奇怪。特别是,当我单击未选中的时,已选中的未选中,但未选中的仍处于未选中状态!我的意思是:

  • 已选中 --> 未选中
  • 未选中 --> 未选中!!

即使我使用 My.Settings.Save 和 Load() 方法,在执行之间加载之前的状态也有问题。

以前有人发现过这个问题吗?你对正在发生的事情有任何线索吗? 谢谢!

【问题讨论】:

  • 如果您有两个设置绑定到两个收音机,这听起来像是您使用了错误的控件。如果两个设置都关闭,那么两个无线电也应该关闭。收音机更多地用于确定 ONE 项目的各种价值:性别 (M/F)、颜色(红色、蓝色、绿色......)等
  • 这正是我的代码出了问题。我想我需要为每个单选按钮添加一个设置,但实际上只需要一个。我删除了第二个,一切正常,谢谢!如果可以的话,我会将其标记为正确答案!

标签: vb.net radio-button settings application-settings


【解决方案1】:

这似乎是我前段时间遇到的问题。
如果我是正确的,您在表单中添加了两个单选按钮,通过代码更改另一个的状态,例如

rdoButton1:
rdoButton2.checked = false

rdoButton2:
rdoButton1.checked = false

如果是这种情况,那就是你的问题。
当您尝试将第一个的状态更改为 true 时,会发生奇怪的事情,rdoButton1 会更改 rdoButton2 的状态,因此也会在另一个上引发 checkChange 事件,导致两者都关闭。

解决这个问题的非常(滑稽)简单的解决方案:
添加一个 groupBox,将两个单选按钮放在 groupBox 中,删除更改其他状态和成功的单选按钮的附加代码。

原因是 groupBox 有一个内置功能,它只允许在其内部一次检查一个单选按钮,省去了您必须自己编写代码的麻烦。

【讨论】:

  • 正如我在对上一个回复的评论中所说,这不是我遇到的问题,但无论如何感谢,因为现在我明白了为什么会这样。
  • 至少从 v3.0 开始,这种行为就已成为 Windows 的一部分。单选按钮用于相互排斥的选择(并从汽车的收音机调谐器中获取它们的名称 - 它一次只能调谐到一个电台)。但不仅仅是 GroupBox 具有特殊的功能,任何容器控件(Forms、TabPages、Panel 等)也是如此。 GroupBoxes 的好处是它可以向用户显示无线电集属于哪个逻辑组。
  • 主窗体本身不允许一次只打开一个单选按钮。
猜你喜欢
  • 1970-01-01
  • 2014-09-20
  • 2013-09-24
  • 2014-08-20
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
相关资源
最近更新 更多