如何使计时器只发射一次

Mad*_*ran 4 .net c# timer

我正在使用C#2.0并在Winforms上工作.我有两个应用程序(app1,app2).当app1运行时,它将自动调用app2.我在app2中有一个计时器,在timer_tick中我激活了一个buttonclick事件.但是我希望这个按钮点击只在应用程序启动时被触发一次.

我面临的问题是出于一些不知情的原因,即使我使mytimer.Enable = false,计时器也会被触发多次.有没有办法我可以让计时器不被第二次调用.或者有没有办法让我可以自动触发按钮点击事件而不使用定时器.

这是代码:

private void Form1_Activated(object sender, EventArgs e)
{
    mytimer.Interval = 2000;
    mytimer.Enabled = true;
    mytimer.Tick += new System.EventHandler(timer1_Tick);

}
private void timer1_Tick(object sender, EventArgs e)
{
    mytimer.Enabled = false;
    button1_Click(this, EventArgs.Empty);
}


private void button1_Click(object sender, EventArgs e)
{ 
}
Run Code Online (Sandbox Code Playgroud)

All*_*enG 8

我还没有测试过这个(所以准备编辑),但我怀疑是因为你mytimer.Enabled = true;在Form1_Activated事件中启用了timer(),而不是在表单初始加载时.因此,每次表单变为活动状态时,它都会重置启用计时器.

编辑:好的,我现在已经验证:假设您确实需要计时器,请将mytimer.Enabled移动到表单的构造函数中.


Hug*_*are 2

您可以尝试删除处理程序而不是禁用计时器

mytimer.Tick -= new System.EventHandler(timer1_Tick);
Run Code Online (Sandbox Code Playgroud)