在C#中为多个对象调用相同的函数

时间:2013-05-19 10:14:31

标签: c#

如何在C#中使用接受对象作为参数的函数?

例如,我在表单中有很多复选框,所有复选框都运行相同的过程,但我不想在每个复选框事件中编写相同的函数调用:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        callMyFunction();
    }
}

我想要的是创建一个事件处理程序来侦听注册到我的事件的所有复选框对象。每当触发checkBox_CheckedChanged事件时,我的函数就会运行。

1 个答案:

答案 0 :(得分:8)

如果复选框是提升事件的复选框,则sender应为复选框。您可以检查sender的类型并使用它而不是明确命名复选框:

private void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = sender as CheckBox;
    if(cb != null and cb.Checked)
    {
        callMyFunction(cb);
    }
}

然后,您可以将此相同的处理程序添加到所有复选框中,例如

checkBox1.CheckedChanged += CheckBox_CheckedChanged;
checkBox2.CheckedChanged += CheckBox_CheckedChanged;
...