当前位置:编程学习 > C#/ASP.NET >>

.NET中使用VC++语言如何为C#设计的窗口添加事件?

我先创建了一个C#语言的项目,添加一个Form,名称为CSharpForm,并使该项目的输出为类库;
然后在解决方案中添加一个VC++ CLR WindowsForm的项目,并添加CSharpForm类库的引用。
我想在VC项目中使用CSharpForm窗口的事件,比如我在VC代码中定义一个CSharpForm的对象,并为其Closed事件添加处理方法,我这样写:
CSharp_CLI::CSharpForm^ form=gcnew CSharpForm();//CSharp_CLI是C#项目的命名空间
form->Closed+=gcnew EventHandler(&CLR_Form::Form1::OnFormClose);
form->Show();

OnFormClose方法定义如下:
System::Void OnFormClose(System::Object^ sender,System::EventArgs^ args)
{
System::Windows::Forms::MessageBox::Show("form closed");
}

编译时老是出错:
'void CLR_Form::Form1::OnFormClose(System::Object ^,System::EventArgs ^)' : 
the specified function does not match the delegate type 'void (System::Object ^,System::EventArgs ^)'

哪位大侠知道该怎么定义OnFormClose啊? --------------------编程问答-------------------- MFC是消息机制的好象,
托管C++和C井一样。
--------------------编程问答-------------------- form->Closed += gcnew EventHandler(this, &CLR_Form::Form1::OnFormClose); --------------------编程问答-------------------- MFC是消息机制的好象,
托管C++和C井一样。
form->Closed += gcnew EventHandler(this, &CLR_Form::Form1::OnFormClose); --------------------编程问答-------------------- mark 帮顶 --------------------编程问答-------------------- mark!! --------------------编程问答-------------------- 转载一段话,或许值得你注意:

最近几周一直在琢磨C++/CLI中托管与非托管的混合编程,因为新的项目用C#写了软件界面,必须使用“托管”代码,而有些功能以前使用VC已经实现了,因而还是希望使用以前的代码,也就只能使用“非托管”代码了。本想找一个合适的书看看,找了半天,居然没有找到一本合适的,真是“书到用时方恨少”呀!只能“自己动手,丰衣足食”。下面我就将自己体会总结一下,不对的地方,希望朋友们指正。一、 非托管代码中使用托管代码的类基本规则: 1、 不可在非托管类中定义为托管类的对象成员; 2、 可以在类的实现代码中使用托管类; 3、 可以在类的函数中使用托管类,可以作为函数的参数,也可以作为函数的返回值; 4、 使用值类型托管类时,可以使用追踪句柄(Trancing Handle)定义对象,也可以直接定义对象; 5、 使用引用类型托管类时,只能使用追踪句柄(Trancing Handle)定义对象。 备注:在引用前使用“using namespace ***”,引入相应的命名空间。 二、 托管代码调用非托管代码基本规则: 1、 在托管类中不能定义非托管类的对象成员,但可以定义非托管类的指针成员; 2、 在托管类的方法的参数或返回值,不能使用非托管类的对象或其引用,但可以使用非托管类的指针; 3、 在托管类的实现代码中,可以像非托管代码一样正常使用非托管的类及函数。 备注: 使用非托管类之前,需要使用相应的include命令包含需要的头文件。 
--------------------编程问答-------------------- mark!!1
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,