c# - 是否有多种方法可以在 Windows 窗体中对单选按钮进行分组?

标签 c# winforms radio-button

我的表单中有几个单选按钮应该全部连接,但我希望其中一个位于单独的容器中,以便将其与其他一些相关输入专门分组。这是一般的外观:

Radio Button Inputs

有没有办法将第四个单选按钮与其他 3 个单选按钮组合在一起,即使它在自己的组合框中?

最佳答案

单选按钮只有在同一个父级中时才互斥。据说我可以想到两种选择。

  1. 让他们在同一个父级,处理父级的 Paint 事件并手动绘制自己,给人一种他们是不同组的印象。
  2. 你必须手动管理互斥:(

RadioButtons 没有魔法,它们只是在幕后将其他 radio 的 Checked 属性设置为 false。

private List<RadioButton> radioButtons = new List<RadioButton>();
//Populate this with radios interested, then call HookUpEvents and that should work

private void HookUpEvents()
{
    foreach(var radio in radioButtons)
    {
        radio.CheckedChanged -= PerformMutualExclusion;
        radio.CheckedChanged += PerformMutualExclusion;
    }
}

private void PerformMutualExclusion(object sender, EventArgs e)
{
    Radio senderRadio = (RadioButton)sender;
    if(!senderRadio.Checked)
    {
        return;
    }
    foreach(var radio in radioButtons)
    {
        if(radio == sender || !radio.Checked)
        {
            continue;
        }
        radio.Checked = false;
    }
}

关于c# - 是否有多种方法可以在 Windows 窗体中对单选按钮进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065382/

相关文章:

c# - SQL 更新 - 不更新 for 循环中的多行

html - 删除同一父 div 中其他子项的类

c# - 在 Visual Studio 中查看运行时的变量值

c# - 对于名为 "Misc"的类别,CategoryAttribute 返回 "Default"

c# - 有什么有效的解决方案/方法吗?

c# - MDIchild 窗体位于面板后面

javascript - 使用 Jquery 周围的标签文本查找单选按钮和复选框名称

java - 单个 Activity 中的多个 radio 组

c# - Queryable.Any() 返回 null?

c# - 如何从字符串中获取年份?