嗨我有一个有两种形式的程序..
就像这样
Form1(我的主要表格)
From2
Form2仅显示是否由form1调用, 基本上当我启动程序form1是唯一的那个。 但有些奇怪的是...... Form2中的计时器已经在运行。
任何人都知道为什么会这样?
更新
这里使用的代码
public partial class MainForm : Form, IMessageFilter
{
public Form2 f2 = new Form2();
}
public void ShowForm2()
{
f2.Show();
}
答案 0 :(得分:0)
因此,根据您的说明,您在创建Form2
时实例化Form1
...因此我猜测默认情况下Timer
已启用并且在实例化时实例化Form2
已实例化,因此它立即启动。
您需要对其进行更改,以便在您显示Form2
(可能在Load
事件中)或之后的某个其他点之前不启用计时器。
更多代码可能会有所帮助 - 我仍然觉得我在这里刺伤了黑暗。
答案 1 :(得分:0)
当你说:
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中运行计时器。