如何防止单选按钮的自动选择

时间:2015-09-03 22:40:21

标签: radio-button gtk#

将Gtk#RadioButton class的实例添加到GUI时,它会自动检查(“激活”)作为其单选按钮组的第一个成员。

对于 Gtk ,这已在某种程度上进行了讨论in another questionthe selected answer的要点是用户希望选择一个单选按钮所有时间

我不反对。

但是,我会以某种方式自动生成我的用户界面,因此每个单选按钮都链接到一个数据模型,但是没有一个单选按钮可以随时获得对任何其他单元的引用{ {1}}个实例。数据模型确保始终检查一个单选按钮。

除了足以满足用户期望外,我认为这是一个好的做法,就像这样,数据完整性由数据模型确保,而不是由GUI确保。

不幸的是,Gtk#会自动检查所有单选按钮,因为它认为每个单选按钮都是其组中的第一个。为了将各种单选按钮添加到同一组,我必须将组中的第一个单选按钮传递给其他单选按钮的构造函数 - 我不能,如上所述,因为我没有任何方法可以获得实例化其他按钮时对第一个单选按钮的引用。

将单选按钮的Active property设置为RadioButton无效,也无法调用Toggle method

有没有办法抑制这种自动选择,可能是通过子类化和覆盖我还找不到的东西?或者,是否有可能强制CheckButton看起来像一个单选按钮用于此目的?

如果真的没有其他解决方案,我会尝试实施another answer中建议的解决方案,其中包括为每个单选按钮添加第二个隐藏的单选按钮,但我会发现生产代码非常棘手

2 个答案:

答案 0 :(得分:1)

单选按钮类似于复选按钮,除了它们被分组以便一次只能选择/按下一个按钮。

他们要求小组正确履行职责。

从下来尝试解决方案,它不是那么hacky,只是尝试添加一个始终被选中的隐藏单选按钮。

答案 1 :(得分:1)

扩展到Josip的解决方案:创建自己的单选按钮小部件,实际上只包含两个gtk单选按钮,其中一个总是被隐藏。然后你的工厂创建这个而不是原来的gtk按钮...