はじめまして。
.Net VC++を使用しています。
勉強中につき、初歩的な質問かと思いますが、
ご教示お願いします。
以下のようにプログラムでbutton1を1回押下すると、
testは1、2、3・・・のように増えていきますが、
2回目を押下すると、testが1,3,5・・・と
増えていってしまいます。
なぜ1,3,5となってしまうのでしょうか。
また、解決するにはどうしたらいいのでしょうか。
public: void InitializeTimer(void)
{
timer1->Interval = 1000;
timer1->Enabled = true;
this->timer1->Tick += gcnew System::EventHandler(this,
&Form1::timer1_Tick);
test=0;
}
void timer1_Tick(System::Object ^ sender,System::EventArgs ^ e)
{
test++;
}
private: System::Void button1_Click(System::Object^ sender,
System::EventArgs^ e)
{
InitializeTimer();
}
ボタンをクリックするたびに
this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
が実行されているため、Tick イベントにイベントハンドラがどんどん追加されていま
す。
もう一回ボタンを押すと、1,4,7…じゃないかな。
何故、ボタンをクリックするたびに InitializeTimer() するのでしょうか?
一回しか初期化したくないなら、それなりの場所(コンストラクタとか)におかないと
だめですよ。
さっそくの回答ありがとうございます。
イベントハンドラが追加されてしまうのですね。
てっきり、初期化してやり直してくれるものだと
認識しておりました。
修正したら問題なく作動しました。
ありがとうございました。