【发布时间】:2023-03-21 02:45:02
【问题描述】:
我是 C# 的新手,我在使用 Windows 窗体应用程序中的事件处理程序时遇到了问题。我在运行时创建了多个单选按钮(存储在buttonz 列表中),并且都分配了相同的事件处理程序。
在foreach 循环中:
buttonz.Add(new RadioButton());
buttonz[buttonz.Count - 1].CheckedChanged += new EventHandler(radio_checked);
下面是我的事件处理程序:
private void radio_checked(object sender, EventArgs e)
{
RadioButton btn = (RadioButton)sender;
Console.WriteLine("{0} Radio checked!", btn.Text);
}
输出是:
Button1 Radio checked! (1st button is checked)
Button1 Radio checked! (2nd button is checked)
Button2 Radio checked!
Button2 Radio checked! (3rd button is checked)
Button3 Radio checked!
因此,当按钮未选中时,也会调用事件处理程序。我怎样才能防止这种情况?我已经阅读了一些问题,但对于我的水平来说它们很复杂,因此我无法提取我需要的信息。解释性的答案非常受欢迎。谢谢。
【问题讨论】:
-
我正在使用 Winforms 应用程序。忘记添加问题了。
-
您对每个按钮使用相同的事件处理程序 - 当然,当单击任何按钮时,都会执行相同的事件处理程序。使用 sender 参数来区分按钮或使用不同的事件处理方法。
-
我想使用同一个处理程序,问题是处理程序被调用了两次。感谢人们,他们指出了我该如何解决这个问题。
标签: c# event-handling