我想知道在计时器结束后如何最大化主窗体窗口。
假设计时器结束时窗口最小化。
这就是我尝试实现它的方式:
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();
}
我在这里缺少什么?
答案 0 :(得分:0)
创建一个名为NowItsTime的公共布尔值并将其设置为false。 当计时器启动时,进行if检查以查看NowItsTime是否为真,否则声明是否为真。
如果是真正的代码: - 将窗口状态设置为最大化。 - 停止计时器。
其他代码: - 将NowItsTime设置为true。
简短解释: 它运行一次并在下一次运行时直接停止。
答案 1 :(得分:0)
确定,
我找到了解决方案:
我使用了第一个代码,但我在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;
}
}
操作系统管理事件的方式可能是先处理显示,然后再处理状态。
其他人有更好的解释吗?
感谢您的尝试。