问题很简单:
我在表单上有多个对象,我想引发一个对象的事件,该对象在他之前有另一个对象。实际上我想将事件委托给他之后的下一个对象。
void EditorNode::onButtonDownClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
// here I need to call the event of another object - a picturebox
drawCanvas->OnMouseDown( *e);
}
我不确定这是否是正确的方法。我也收到以下错误。
'System::Windows::Forms::Control::OnMouseDown': candidate function(s) not accessible
我该怎么办?这是最好的方法吗?
答案 0 :(得分:1)
编译器对象,因为OnMouseDown()是受保护的方法。非常有意,它阻止你在脚下射击自己。你当然瞄准枪,e
对象没有正确的属性值。 Location
,X
和Y
属性错误,它们与控件的客户区域相对。
您需要将一个公共方法添加到代表 drawCanvas 对象的任何类中,以便您可以调用OnMouseDown()。并注意为MouseEventArgs对象提供正确的值,这通常需要PointToScreen和PointToClient方法来转换坐标值。如果它是PictureBox对象,那么您需要从中派生它,以便添加该公共方法。所有非常强烈暗示你做错了。