如果在单选按钮上有条件

时间:2015-12-08 12:55:21

标签: winforms

我能够创建按钮。我将使用大约65个按钮,你如何在按钮上使用if else条件?有人可以给我看一个例子吗?提前谢谢。

    private void createButtons()
    {
        flowLayoutPanel1.Controls.Clear();
        for(int i = 0;i <10;i++)
        {
            RadioButton b = new RadioButton();
            b.Name = i.ToString();
            b.Text = "radiobutton" + i.ToString();
            b.AutoSize = true;
            flowLayoutPanel1.Controls.Add(b);

        }
    }

2 个答案:

答案 0 :(得分:0)

如何将RadioButtons放入列表或数组中?这样您就可以使用if (allRadioButtons[1].checked) {...}

这是一个例子

    private List<RadioButton> allRadioButtons = new List<RadioButton>();

    private void createButtons()
    {
        flowLayoutPanel1.Controls.Clear();
        for (int i = 0; i < 10; i++)
        {
            RadioButton b = new RadioButton();
            b.Name = i.ToString();
            b.Text = "radiobutton" + i.ToString();
            b.AutoSize = true;
            flowLayoutPanel1.Controls.Add(b);
            //add every button to the list
            //the one with the Text radiobutton0 will be accessible as allRadioButtons[0]
            //the one with the Text radiobutton1: allRadioButtons[1]
            //etc
            allRadioButtons.Add(b);
        }

    }

    //you can use your list in any other method
    private void myMethod() {
        if (allRadioButtons[0].Checked)
        {
            //do something
        }
    }

答案 1 :(得分:0)

如果Andrea的回答对您不起作用(因为您没有将其标记为解决方案),另一种选择是创建容器,例如GroupBox,然后添加以编程方式创建的{ {1}}控制此容器。然后你可以像这样循环遍历属于RadioButton的控件:

GroupBox

这会循环遍历foreach (Control c in myGroupBox.Controls) { if ((RadioButton)c).Checked) //Do something } 中的所有控件并将它们转换为GroupBox并检查它们是否已被选中。我已经使用类似的东西作为不同应用中相当多的要求的基础;根据某些条件(如控件的类型或控件的RadioButton值),可以很容易地创建一个递归方法,该方法接受ControlCollection,循环并根据需要应用逻辑。

然后,只要在运行时将Tag添加到RadioButton,您就可以执行类似GroupBox myGroupBox.Controls.Add(b) b你'的操作已在示例代码的RadioButton循环中创建。 More on runtime control creation here