-1

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

     Atom^ atomForm = gcnew Atom();
             atomForm->FormClosed+= gcnew System::Windows::Forms::FormClosedEventHandler(atomForm,&Form1::Atom_FormClosed);
             atomForm->ShowDialog();

但它正在生成此错误 Error 1 error C2440: 'initializing' : cannot convert from 'LRTSimulation::Atom ^' to 'LRTSimulation::Form1 ^' LRTDesign.h 167 1 LRTSimulation

我曾经在 C# 中平静地做到这一点。我怎样才能在这里避免它?

4

1 回答 1

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

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

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

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

于 2012-06-20T13:08:57.107 回答