
button1_Click_1(System::Object^ sender, System::EventArgs^ e)中sender显示转化为button对象报错
用VS2010设计windows窗体应用程序,在private:System::Voidbutton2_Click(System::Object^sender,Syste...
用VS2010设计windows窗体应用程序,在private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { }中写了如下代码:
Button btn=(Button)sender;
结果编译器报错,报告如下:
Form1.h(319): error C2440: “类型转换”: 无法从“System::Object ^”转换为“System::Windows::Forms::Button”
1> 转换要求构造函数或用户定义的转换运算符,而该运算符不能由 const_cast 或 reinterpret_cast 使用
1>Form1.h(319): error C3673: “System::Windows::Forms::Button”: 类没有复制构造函数
但是我在网上查到的是sender是可以转换为Button对象的,而且有一个用VS.NET编写计算器的例程也是这么写的,为什么我自己复制到VS2010中就不可以了呢?
是因为我用的windows窗体应用程序的项目吗?
如果是的话,那么windows窗体应用程序的项目与VS.NET的区别在哪里呢?
小弟是新手,可能提出来的问题很不专业,不过实在是很困惑,希望前辈们能够帮忙解答一下,非常感谢! 展开
Button btn=(Button)sender;
结果编译器报错,报告如下:
Form1.h(319): error C2440: “类型转换”: 无法从“System::Object ^”转换为“System::Windows::Forms::Button”
1> 转换要求构造函数或用户定义的转换运算符,而该运算符不能由 const_cast 或 reinterpret_cast 使用
1>Form1.h(319): error C3673: “System::Windows::Forms::Button”: 类没有复制构造函数
但是我在网上查到的是sender是可以转换为Button对象的,而且有一个用VS.NET编写计算器的例程也是这么写的,为什么我自己复制到VS2010中就不可以了呢?
是因为我用的windows窗体应用程序的项目吗?
如果是的话,那么windows窗体应用程序的项目与VS.NET的区别在哪里呢?
小弟是新手,可能提出来的问题很不专业,不过实在是很困惑,希望前辈们能够帮忙解答一下,非常感谢! 展开
4个回答
展开全部
是不是别的控件也调用了此方法?
你理解不对,准确来说,sender就是调用事件的控件本身,当确实是一个button调用这个事件的时候,那sender就是button(就是可以强转),如果不是,那自然无法转的
你理解不对,准确来说,sender就是调用事件的控件本身,当确实是一个button调用这个事件的时候,那sender就是button(就是可以强转),如果不是,那自然无法转的
更多追问追答
追问
我又重新建了一个项目,只添加了一个按钮控件,双击该按钮进入相应的函数体内敲入问题所述代码,编译器还是会提示错误,请问为什么呢?
追答
少个^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前提是,你的button2_Click确定绑定到button2.Click里去了么?
更多追问追答
追问
请问怎样绑定呢?我是在窗体设计界面双击要编译的按钮时编译器会自动切换到该按钮的相应函数处,我就是在那个函数体内写的如问题所述的代码。您说的绑定是什么含义啊,怎么实现呢?
追答
你是在哪个环节报错的呢?
编译时就报错?点按钮时报错?还是?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Button^ btn=(Button^)sender;
更多追问追答
追问
前辈您能告诉我为什么两处都要加上^吗?这个^是什么含义啊
追答
clr中的引用, 类似于c++中的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询