C#中事件函数能否传递更多的参数

来源:百度知道 编辑:UC知道 时间:2024/09/27 13:16:08
如下程序:
private void button_Click(object sender, EventArgs e)
{
neworacle so = new neworacle();
someobject sb = new someobject();
sb.ButtonClick += new EventHandler(ButtonClick);
}
private void ButtonClick(object obj, EventArgs e)
{
//some code over here
}
能否在private void ButtonClick(object obj, EventArgs e)里增加更多的函数?
如果要将button_Click()里的so传递到ButtonClick()函数里,应该怎么做?
多谢!

sb.ButtonClick事件的参数是一定的,建议更改someobject类,给someobject类增加一个属性,如下

someobject
{
.....
.....
someobject(neworacle oracleObj)
{
tempOracle=oracleObj;
}
private neworacle tempOracle=null;
}

使用时:
private void button_Click(object sender, EventArgs e)
{
neworacle so = new neworacle();
someobject sb = new someobject(so);
sb.ButtonClick += new EventHandler(ButtonClick);
}
private void ButtonClick(object obj, EventArgs e)
{
this.tempOracle=.....
}

事件的签名是没法改,但是事件的参数是你可以控制的,想放什么都行,你可以把需要的东西都写成一个新的参数类,想传多少都可以,只是大家基本上都不用已经有的两个参数