C# 在程序启动时,第二个窗体已在运行

本文关键字:窗体 运行 第二个 程序 启动 | 更新日期: 2023-09-27 17:56:47

嗨,我有一个有两种形式的程序。

它是这样的

表格

1(我的主表格)

从2

Form2 仅在由 form1 调用时才会显示,基本上,当我启动程序时,form1是那里唯一的一个。但奇怪的是..Form2 中的计时器已在运行。

有人知道为什么会这样吗?

更新:

这是我使用的代码

public partial class MainForm : Form, IMessageFilter 
{
    public Form2 f2 = new Form2();
 
}
public void ShowForm2()
{
f2.Show();
}

C# 在程序启动时,第二个窗体已在运行

当你说:

public Form2 f2 = new Form2 ();  // its inside public partial class MainForm

是这样的:

public class MainForm {
     public Form2 f2 = new Form2();
     public void ShowForm2() {
         f2.Show();
     }
}

您不应该这样做,否则您应该在需要时创建 Form2 的实例,如下所示:

public class MainForm {
     public void ShowForm2() {
         Form2 f2 = new Form2();
         f2.Show();
     }
}

现在,您确定该实例仅在收到消息时才存在,并且如果它被隐藏,将避免在 Form2 中运行计时器。

因此,根据您的澄清,您在创建Form1时实例化Form2...所以我猜 Timer 是默认启用的,并在实例化时Form2实例化,所以它会立即启动。

您需要更改它,以便在您显示Form2(可能在Load事件中)或稍后的其他时间点之前不会启用计时器。

不过,更多的代码可能会有所帮助 - 我仍然觉得我在这里刺伤了黑暗。