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();
}
当你说:
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
事件中)或稍后的其他时间点之前不会启用计时器。
不过,更多的代码可能会有所帮助 - 我仍然觉得我在这里刺伤了黑暗。