开关盒与单选按钮 - C#
我想开发一个开关case语句,允许我运行代码的依赖我选择了3个单选按钮。我有一个消息框语句来告诉我,这是成功的,但它从来没有显示,所以我敢肯定,我做错了什么开关盒与单选按钮 - C#
任何意见将是巨大的
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;
}
}
与您的代码的问题是要创建的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
不在窗体本身,而是例如面板中,你需要改变的我的第一行代码此:
RadioButton radioBtn = this.panel1.Controls.OfType<RadioButton>()
.Where(x=>x.Checked).FirstOrDefault();
通知this.panel1.Controls
部分
'var name = this.panel1.Controls.OfType
在这一行中,您正在创建一个全新的RadioButton对象并创建一个名为radioBtn的引用。
RadioButton radioBtn = new RadioButton();
所以,在你的switch语句,没有你的块被进入,因为radioBtn.Name将是零,或者由.NET Framework分配一些默认值。
您可能想要检查通过Visual Studio图形设计器添加的现有RadioButton的值,而不是创建新的RadioButton。所以,你的代码看起来像下面(用虚构的名字,因为我不知道你叫在设计你的实际单选按钮都):
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
}
}
'单选radioBtn =(单选)发件人;' –
你正在创建一个没有名字的新RadioButton,所以当然它什么也不做。 – Pikoh
不是@JohnnyMopp。这似乎是一个按钮单击事件,所以你不能将发件人投给RadioButton – Pikoh