1
说我有三个类:class1,control1和form1; form1实例化contorl。并控制1实例化class1的,后来产生一些事件,我需要“分流”到Form1,以实现我做了一个中间的功能,如下图所示:在链接类中提高事件
public delegate void TestHandler(String^ str);
public ref Class class1
{
event TestHandler^ TestHappen;
void someFunction()
{
TestHappen("test string");
}
};
public ref Class control1
{
event TestHandler^ TestHappen;
class1^ class1Obj;
control1()
{
class1Obj= gcnew class1();
class1Obj->TestHappen+= gcnew TestHandler(this,&control1::onTest);
}
void onTest(String^ str)
{
TestHappen(str);
}
};
public ref Class form1
{
control1^ control1Obj;
form1()
{
control1Obj= gcenw control1();
control1Obj->TestHappen+= gcnew TestHandler(this,&form1::onTest);
}
void onTest(String^ str)
{
//do something with the string...
}
};
我不希望使用的Class1在form1中,有没有办法删除中间的onTest()函数。
这是一个代码味道一丁点儿。但是,您已将Control作为硬基类,并且不支持多重继承。不要担心,你做对了。冒泡事件并不罕见。 –