带单选按钮的开关盒 - C#

时间:2017-03-07 15:44:36

标签: c# radio-button switch-statement

我正在尝试开发一个switch case语句,允许我根据我选择的3个单选按钮来运行代码。我有一个消息框声明告诉我这是否成功,但它从未显示,所以我确定我做错了什么

任何建议都会很棒

    public void button2_Click(object sender, EventArgs e)
    {

        RadioButton radioBtn = new RadioButton();
        if (radioBtn.Enabled == true)
        {
            switch (radioBtn.Name)
            {
                case "radioButton1":
                    ComicBooks CB = new ComicBooks();
                    CB.setTitle(textBox1.Text);
                    MessageBox.Show(CB.Title);
                    break;

                case "radioButton2":
                    //do something
                    break;

                case "radioButton3":
                    //do something
                    break;

            } 

        }

2 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您在此处创建RadioButton的新实例:

RadioButton radioBtn = new RadioButton();

此实例未连接到您的UI中的任何内容,并且没有设置Name属性,因此它与任何switch案例都不匹配。

如果要查看单击按钮时选择的RadioButton,并根据其名称执行某些操作,可以执行以下操作:

RadioButton radioBtn = this.Controls.OfType<RadioButton>()
                                       .Where(x=>x.Checked).FirstOrDefault();
if (radioBtn!=null)
{
    switch (radioBtn.Name)
    {
        case "radioButton1":
           //Your switch structure here ...

}

如果RadioButtons不在表单本身中,例如在Panel中,则您需要更改我的代码的第一行:

RadioButton radioBtn = this.panel1.Controls.OfType<RadioButton>()
                                           .Where(x=>x.Checked).FirstOrDefault();

注意this.panel1.Controls部分

答案 1 :(得分:1)

在这一行中,您将创建一个全新的RadioButton对象并创建一个名为radioBtn的引用。

RadioButton radioBtn = new RadioButton();

因此,在你的switch语句中,没有输入任何块,因为radioBtn.Name将为null,或者是由.net框架分配的某个默认值。

您可能希望检查通过Visual Studio图形设计器添加的现有RadioButton的值,而不是创建新的RadioButton。因此,您的代码看起来如下所示(带有虚构的名称,因为我不知道您在设计器中命名的实际RadioButtons):

public void button2_Click(object sender, EventArgs e)
{
  if (radioButton1.Checked)
  { 
    ComicBooks CB = new ComicBooks();
    CB.setTitle(textBox1.Text);
    MessageBox.Show(CB.Title);
  }
  else if (radioButton2.Checked)
  { 
    // do something
  }
  else if (radioButton3.Checked)
  { 
    // do something
  }
}