Как я могу вызывать функцию, которая изменяет положение элемента с помощью "timer->tick = EventHandler(...)"?

Я хочу изменять местоположение элемента формы через одинаковый промежуток времени. Как мне вызвать функцию через EventHandler. Или есть другой способ?

//вызываемая функция

System::Void PharmacyDB::Game::_update(System::Object^ sender, System::EventArgs^ e)
{
    pictureBoxCube->Location = Point(pictureBoxCube->Location.X + dirX * _sizeOfSides, pictureBoxCube->Location.Y + dirY * _sizeOfSides);
    return System::Void();
}

//Функция, из которой вызываю (отрабатывает при каждой загрузке формы

System::Void PharmacyDB::Game::Game_Shown(System::Object^ sender, System::EventArgs^ e)
{
    this->timer->Tick += gcnew EventHandler(_update);
    return System::Void();
}

_update горит красным, ошибка:

недопустимый инициализатор делегата -- функция не соответствует типу делегата &: недопустимая операция с выражением привязанной функции-члена. System::EventHandler: недопустимый аргумент для конструктора делегата; целевой объект делегата должен быть указателем на функцию-член

Если я делаю функцию статической, ошибка пропадает, но исчезает возможность изменять свойства элемента формы. Через событие таймера Tick это сделать тоже не получилось (не понял как)

Так

this->timer->Tick += gcnew EventHandler(this, _update);

тоже ошибку выдает:

Ошибка C3867 "PharmacyDB::Game::_update": нестандартный синтаксис; используйте "&", чтобы создать указатель на член


Ответы (0 шт):