这是在使用c#的WinForms中。 有10个单选按钮,即汽车,自行车,火车,公共汽车等形式和与文本“XYZ”的标签。所有在同一组框中。 我编写了以下常用方法来隐藏单选按钮上的文本。c#中的事件处理程序仅适用于新控件
private void Hide_radio(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb != null)
label1.Text="";
}
奇怪的是,调用事件在以下方式(刚下初始化组件),只适用于少数收音机,而不是所有。当我拖动一个新的收音机时,它就可以工作。 [严格拖放滴。没有新的代码添加或删除。]
foreach (Control gb1c in groupBox1.Controls)
{
if (gb1c is RadioButton)
{
RadioButton rb = gb1c as RadioButton;
rb.CheckedChanged += new MouseEventHandler(Hide_radio);
break;
}
}
我已检查designer.cs和所有无线电的代码是相同的。因此,基本上,事件处理只处理少量和新的无线电,但不是全部。 为什么C#表现得如此幼稚......
“为什么C#表现得如此幼稚” - 它只会做你告诉它做的事情。 – 2013-03-18 18:55:07
你不需要一个break语句你需要的是创建一个方法来检查你需要什么,而不是首先进行Casting我会亲自检查一下,看看Control是否也是一个特定类型,你也需要做一个方法递归调用..“为什么C#表现得如此幼稚?它不是语言,它可能是'用户/编码器' – MethodMan 2013-03-18 18:55:29