C ++ / CLI, вызывающий событие другого объекта

0

Проблема проста:

У меня есть несколько объектов в форме, и я хочу поднять событие объекта, у которого есть "перед ним" другой объект. Практически я хочу делегировать событие следующему объекту, идущему за ним.

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

Как мне продолжить? Каков наилучший способ сделать это?

Теги:
visual-studio-2010
c++-cli

1 ответ

1
Лучший ответ

Объекты компилятора, потому что OnMouseDown() является защищенным методом. Довольно преднамеренный, он мешает вам стрелять в ногу. Вы, конечно, нацелитесь на это оружие, у объекта e нет правильных значений свойств. Свойства Location, X и Y неверны, они относятся к области клиентского интерфейса.

Вам нужно будет добавить общедоступный метод для любого класса, представляющего объект drawCanvas, чтобы вы могли вызывать OnMouseDown(). И позаботьтесь о предоставлении объекту MouseEventArgs правильных значений, которые обычно требуют, чтобы методы PointToScreen и PointToClient переводили значение координаты. Если это объект PictureBox, вам необходимо извлечь его из этого, чтобы вы могли добавить этот общедоступный метод. Все и все очень сильный намек на то, что вы делаете это неправильно.

  • 0
    Спасибо за быстрый ответ. Идея была неправильной, хотя я подхожу к проблеме!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню