Как добавить событие Tick в System :: windows :: Forms :: Timer в неуправляемом классе - PullRequest
0 голосов
/ 28 октября 2011

Я пытаюсь сделать это так, как нашел в каком-то примере:

TimerID = gcnew System::Windows::Forms::Timer(); 
TimerID->Tick += gcnew System::EventHandler(this, &Bridge::timer1_Tick);

и

System::Void Bridge::timer1_Tick(System::Object^  sender, System::EventArgs^  e) 
{
    Bridge::DoUpdate();
}

Но не удается создать обработчик событий из-за ошибки:

ошибка C3364: «System :: EventHandler»: неверный аргумент для делегата конструктор; цель делегата должна быть указателем на члена функция

Мост неуправляемый класс. Итак, я объявляю TimerID таким образом:

gcroot<System::Windows::Forms::Timer ^> TimerID;

Что я здесь не так делаю? Как добавить собственно событие Tick?

1 Ответ

1 голос
/ 28 октября 2011

Вы не опубликовали достаточно кода для диагностики ошибки.Это составляет:

public ref class Bridge : public System::Windows::Forms::Form
{
    Timer^ TimerID;
public:
    Bridge(void) {
        InitializeComponent();
        TimerID = gcnew System::Windows::Forms::Timer(); 
        TimerID->Tick += gcnew System::EventHandler(this, &Bridge::timer1_Tick);        
    }
private:
    void Bridge::timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    }
    void InitializeComponent(void) {
        // etc...
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...