我希望在任务栏上单击表单时运行一个函数并打开它

时间:2015-04-14 08:43:30

标签: c# winforms

这样做的问题是我在这里使用了提示和技巧,但似乎在循环中运行并且不会给出结果。

基本上我运行BackgroundWorker来获取网址获取结果并将结果粘贴到某些Labels

我使用了Form_Activated,但它只是继续在循环中运行,并且不会停止到达BackgroundWorker已完成的事件。

主要代码块:

在Form_Load上运行函数并获取结果并显示:

 private void Form1_Load(object sender, EventArgs e)
    {
        pictureBox1.Show();
        if (!backgroundWorker1.IsBusy)
        {
            backgroundWorker1.RunWorkerAsync();
        }
        else
        {
            MessageBox.Show("Thread already running....");
        }
    }

  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        loadData(); // scrape a URL and paste info to Labels ....
    }

就是这样,现在用户将最小化应用程序,现在每当他点击任务栏图标时,表单应该重新运行与Form_Load相同。我希望有意义,我已经能够使用Form_Activate做到这一点,但它一直在继续。

有任何建议如何完成它?

1 个答案:

答案 0 :(得分:2)

我会存储一个布尔值来记住表单是否在最后一个FormResized事件中被最小化,然后如果它是,如果表单当前没有被最小化,那么请调用你的方法。

private bool minimized = false;

public void FormResized(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        minimized = true;
    }

    if (minimized && this.WindowState != FormWindowState.Minimized)
    {
        minimized = false;
        MyMethod();
    }
}