c#中的事件处理程序只对新控件起作用



这是使用c#的WinForms。有一个表单有10个单选按钮,即…汽车,自行车,火车,公共汽车等。和一个带有文本"XYZ"的标签。都在同一个组框中。我编写了下面的常用方法来隐藏单选按钮的复选框上的文本。

private void Hide_radio(object sender, EventArgs e)
{
    RadioButton rb = sender as RadioButton;
    if (rb != null)
       label1.Text="";              
}
奇怪的是,像下面这样调用事件(就在initialize component下面),只对少数无线电有效,而不是全部。当我拖拽一个新的收音机时,它就能工作了。严格地拖放。未添加或删除新代码。]
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#表现得如此幼稚…

您在第一个事件订阅时打破了每个循环。从循环中删除"break"

使用break;退出循环,因此尚未分配事件处理程序的任何控件都不会获得事件处理程序。这不是c#幼稚的表现,这是c#完全按照你的要求去做。

相关内容

  • 没有找到相关文章

最新更新