尝试从父窗体创建事件处理程序时出错

时间:2012-06-20 10:31:11

标签: c++ windows forms

我正在尝试从创建它的表单中处理某种形式的事件,如下所示

     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#中和平地这样做。我怎么能在这里避免它?

1 个答案:

答案 0 :(得分:0)

 gcnew FormClosedEventHandler(atomForm, &Form1::Atom_FormClosed);

您传递的是错误的对象。显然,Atom_FormClosed()方法是Form1类的一个方法。所以你需要传递一个Form1类型的对象。哪个不能是 atomForm ,正如错误信息告诉你的那样。

可能这个,虽然我们看不到这段代码的位置。

您在C#中从未遇到过这样的问题,因为该语言不允许像C ++ / CLI那样指定委托目标对象。