我和Hans Passant在一起。首先,这听起来像是一个你应该重新考虑的设计,让任何控件与隐藏的控件交互,而这些隐藏的控件不会与其他与之交互的控件显示出来。我提醒你重新考虑你的设计。
带着这个免责声明,当人们不回答我的问题时,我仍然很生气,他们所做的只是批评我的问题,真的问我'为什么要那样做',或者你不应该这样做。我的尝试是给你积极的批评,重新考虑你的设计。 但是我仍然会给你我的问题的最佳答案...
所以我只是将它编码到每个单选按钮上的检查事件。这有点古怪,但我认为你的设计和你想要做的是(非常)奇怪。
所以每个选中的事件中,你需要首先:测试,目前的(新)检查值是真实的,不是虚假的,因为检查事件触发这两个事情发生的时候:当无线电按钮变为检查和时它变得没有检查。这有点奇怪,如果你不寻找这个或知道寻找这个。
第二,如果它被选中,那么我会调用一个单独的'UncheckRadioButtons'方法,其中一个参数传递了刚刚检查过的单选按钮。在这个UncheckRadioButtons方法中,我会有一个数组或单选按钮列表,它包含您只希望其中一个选中的所有单选按钮,然后为每个循环遍历RadioButton中的每个项目列表或数组。在你的循环中,你可以简单地测试这个单选按钮是否与传递给你的UncheckRadioButtons方法的单选按钮相同,如果它不是相同的单选按钮并且它被选中,那么取消选中该单选按钮。因此您的UncheckRadioButtons方法将取消选中除传递给它的一个RadioButton作为参数的所有RadioButton。
抱歉,我没有时间为您编写这样的方法,以便更好地为您提高我的答案。但我想实际给你一个真实的答案,至少在你的路上帮助你。 :)
此答案:http://stackoverflow.com/a/16239389/491907显示单选按钮(实际复选框)的子类的实例,其中一个' GroupName'属性(类似于WPF)被添加。我没有尝试过,但它可能是一个开始。 – pinkfloydx33
与您之前的问题相同。您不能在多个容器中使用AutoCheck属性。所以你必须将它设置为False,并编写代码将Checked属性显式设置为false。如果你感觉到你在与机器对抗,那么你是对的,这不是一个好的用户界面。 –