如何防止Form_activated事件循环?

时间:2015-11-03 13:07:30

标签: c# winforms visual-studio-2015

我希望激活的事件只运行一次。我尝试过使用If条件,但Reload变量没有设置为false,因此它会不断循环。有办法解决这个问题吗?

Form1.cs代码:

private void Form1_Activated(object sender, EventArgs e)
    {
        if (Class1.Reload == true) {
            Class1.Reload = false;
        }
    }

Class1.cs代码:

 public class Class1 {
    public static void Refresh() { Reload = true; }
    public static bool Reload { get; set; }

2 个答案:

答案 0 :(得分:2)

首次触发时,只需取消订阅该事件即可。

private void Form1_Activated(object sender, EventArgs e)
{
    this.Activated -= Form1_Activated;
    // Do other stuff here. 
}

答案 1 :(得分:1)

虽然CathalMF的解决方案有效,但我会发布我实施的解决方案,其目的是在我回到主窗体时刷新DatagridView

 private void Form1_Activated(object sender, EventArgs e) {
        if (Class1.Reload == true) {
            Activated -= Form1_Activated;
            Class1.Reload = false;
            //Here I implement the code to refresh a DatagridView
            Activated += Form1_Activated;
        }
    }

Class1.cs保持不变。