我在VC++2005 CLR 环境中:当双击窗体时产生一个PictureBox来表示树的一个节点,但是我要为这个动态产生的PictureBox添加MouseHover和MouseLeave事件,并处理.于是摸索着试试:
下面是窗体Form1 的MouseDoubleClick事件处理函数private: System::Void WM_OnMouseDoubleClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e)
{
PictureBox ^treeNode = gcnew  PictureBox();//创建一个 PictureBoxtreeNode->Location = Point(e->X-(treeNode->Width/2),e->Y-(treeNode->Height/2));//获取鼠标位置Image ^image = Image::FromFile("BoxOn.jpg");
treeNode->BackgroundImage = image;
treeNode->BackgroundImageLayout = ImageLayout::Stretch;
this->Controls->Add( treeNode );//添加控件到窗体//treeNode 事件声明
($)treeNode->MouseHover += gcnew System::EventHandler(this, &Form1::MouseHover);
($)treeNode->MouseLeave += gcnew System::EventHandler(this, &Form1::MouseLeave);
//treeNode 事件处理
($)private: System::Void MouseHover(System::Object^  sender, System::EventArgs^  e);
{
Image ^image = Image::FromFile("BoxOn.jpg");
treeNode->BackgroundImage = image;
}($)private: System::Void MouseLeave(System::Object^  sender, System::EventArgs^  e); 
{
Image ^image = Image::FromFile("BoxOff.jpg");
treeNode->BackgroundImage = image;
}
}**************代码中($)依次代表错误的位置****************
------ 已启动生成: 项目: BinaryTree, 配置: Debug Win32 ------
正在编译...
BinaryTree.cpp
c:\users\swift ding\documents\visual studio 2005\projects\binarytree\binarytree\Form1.h(163) : error C3364: 'System::EventHandler' : invalid argument for delegate constructor; delegate target needs to be a pointer to a member function
c:\users\swift ding\documents\visual studio 2005\projects\binarytree\binarytree\Form1.h(164) : error C3364: 'System::EventHandler' : invalid argument for delegate constructor; delegate target needs to be a pointer to a member function
c:\users\swift ding\documents\visual studio 2005\projects\binarytree\binarytree\Form1.h(165) : error C2143: syntax error : missing ';' before 'private'
c:\users\swift ding\documents\visual studio 2005\projects\binarytree\binarytree\Form1.h(170) : error C2143: syntax error : missing ';' before 'private'
生成日志保存在“file://c:\Users\ Swift Ding\Documents\Visual Studio 2005\Projects\BinaryTree\BinaryTree\Debug\BuildLog.htm”
BinaryTree - 4 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
不知道该如何处理,哪位高人能帮帮忙,不甚感激^_^

解决方案 »

  1.   


    http://community.csdn.net/Expert/topic/5266/5266126.xml?temp=.5158808
    中我作了回贴,楼主可参考下可否?
      

  2.   

    treeNode->MouseHover += gcnew System::EventHandler(this, );绑定不对吧,传进去一个什么啊?&Form1::MouseHover这是方法么?delegate target needs to be a pointer to a member function//委托需要一个函数指针
      

  3.   

    &Form1::MouseHover
    返回了对MouseHover的引用(地址)