定时器结束后最大化窗口

本文关键字:窗口 最大化 结束 定时器 | 更新日期: 2023-09-27 18:28:51

我想知道如何在计时器完成后最大化主窗体窗口。

假设计时器结束时窗口最小化。

这就是我尝试实现它的方式:

private void timer1_Tick(object sender, ElapsedEventArgs e)
        {
  if (counter[int.Parse(timers[t].ToString())] <= 0)
                {
                    ReadyIndex = int.Parse(timers[t].ToString());
                   Invoke(new Action(() => {
                       this.WindowState = FormWindowState.Normal;
                       this.Show();
                   }));
                    return;
                }
}

我也试过做:

               Invoke(new Action(() => {
                   base.WindowState = FormWindowState.Normal;
                   base.Show();
               }));

和:

           Invoke(new Action(() => {
               thisForm.WindowState = FormWindowState.Normal;
               thisForm.Show();
           }));

而"thisForm"是Form1变量,我在Form_Load方法中启动它,如下所示:

private Form1 thisForm;
        private void Form1_Load(object sender, EventArgs e)
        {
                thisForm = new Form1();
        }

我在这里错过了什么?

定时器结束后最大化窗口

生成一个名为NowItsTime的公共布尔值,并将其设置为false。当计时器启动时,进行if检查,看看NowItsTime是否为真,如果不是,则执行else语句。

如果它的真实代码:-将窗口状态设置为最大化。-停止计时器。

其他代码:-将NowItsTime设置为true。

很快解释道:它只跑一次,下一次直接停下来。

好的,

我找到了解决方案:

我使用了第一个代码,但我在Show()行和windows更改状态之间切换(代码看起来像这样):

private void timer1_Tick(object sender, ElapsedEventArgs e)
        {
  if (counter[int.Parse(timers[t].ToString())] <= 0)
                {
                    ReadyIndex = int.Parse(timers[t].ToString());
                   Invoke(new Action(() => {
                       this.Show();
                       this.WindowState = FormWindowState.Normal;
                   }));
                    return;
                }
}

也许操作系统管理事件的方式是先处理显示,然后再更改状态。

其他人有更好的解释吗?

谢谢你的尝试。