我正在尝试开发一个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;
}
}
答案 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
}
}