C ++ / CLI提升另一个对象的事件

时间:2014-03-17 10:48:08

标签: c++ visual-studio-2010 c++-cli

问题很简单:

我在表单上有多个对象,我想引发一个对象的事件,该对象在他之前有另一个对象。实际上我想将事件委托给他之后的下一个对象。

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

我该怎么办?这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

编译器对象,因为OnMouseDown()是受保护的方法。非常有意,它阻止你在脚下射击自己。你当然瞄准枪,e对象没有正确的属性值。 LocationXY属性错误,它们与控件的客户区域相对。

您需要将一个公共方法添加到代表 drawCanvas 对象的任何类中,以便您可以调用OnMouseDown()。并注意为MouseEventArgs对象提供正确的值,这通常需要PointToScreen和PointToClient方法来转换坐标值。如果它是PictureBox对象,那么您需要从中派生它,以便添加该公共方法。所有非常强烈暗示你做错了。