程序启动时C#,第二个表单已经运行了吗?

时间:2011-05-19 02:02:55

标签: c# winforms timer

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

就像这样

  

Form1(我的主要表格)

     

From2

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

任何人都知道为什么会这样?

更新

这里使用的代码

public partial class MainForm : Form, IMessageFilter 
{
    public Form2 f2 = new Form2();

}

public void ShowForm2()
{
f2.Show();
}

2 个答案:

答案 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中运行计时器。