如何在C#中使用接受对象作为参数的函数?
例如,我在表单中有很多复选框,所有表格都运行相同的程序,但我不想在每个复选框事件中编写相同的函数调用:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
callMyFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是创建一个事件处理程序,侦听注册到我的事件的所有复选框对象.每当触发checkBox_CheckedChanged事件时,我的函数就会运行.
如果复选框是提升事件sender的复选框,那么应该是复选框.您可以检查其类型sender并使用它,而不是显式命名复选框:
private void CheckBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox cb = sender as CheckBox;
if(cb != null and cb.Checked)
{
callMyFunction(cb);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将此相同的处理程序添加到所有复选框中,例如
checkBox1.CheckedChanged += CheckBox_CheckedChanged;
checkBox2.CheckedChanged += CheckBox_CheckedChanged;
...
Run Code Online (Sandbox Code Playgroud)