我正在尝试从创建它的表单中处理某种形式的事件,如下所示
Atom^ atomForm = gcnew Atom();
atomForm->FormClosed+= gcnew System::Windows::Forms::FormClosedEventHandler(atomForm,&Form1::Atom_FormClosed);
atomForm->ShowDialog();
但它正在生成此错误 错误1错误C2440:'初始化':无法从'LRTSimulation :: Atom ^'转换为'LRTSimulation :: Form1 ^'LRTDesign.h 167 1 LRTSimulation
我曾经在C#中和平地这样做。我怎么能在这里避免它?
答案 0 :(得分:0)
gcnew FormClosedEventHandler(atomForm, &Form1::Atom_FormClosed);
您传递的是错误的对象。显然,Atom_FormClosed()方法是Form1类的一个方法。所以你需要传递一个Form1类型的对象。哪个不能是 atomForm ,正如错误信息告诉你的那样。
可能这个,虽然我们看不到这段代码的位置。
您在C#中从未遇到过这样的问题,因为该语言不允许像C ++ / CLI那样指定委托目标对象。