启动代码没有运行?

启动代码没有运行?

问题描述:

在我的应用程序,我把它称之为启动方法,我称之为OnStart MainForm类,它的定义是这样的:启动代码没有运行?

public void OnStart() 
{ 
    //code 
} 

当我把它从Main方法,它不运行。我究竟做错了什么? (哦,并且与OnStop方法是一样的。)

这里是我的Program.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

namespace Logger 
{ 
    static class Program 
    { 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 

      MainForm mainForm = new MainForm(); 
      Application.Run(mainForm); 

      AppDomain.CurrentDomain.ProcessExit += new EventHandler (mainForm.OnStop); 

      mainForm.OnStart(); 
     } 
    } 
} 

Application.Run将挂起,直到你的窗体关闭,所以你需要调用OnStart之前和之后OnStop

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

namespace Logger 
{ 
    static class Program 
    { 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 

      MainForm mainForm = new MainForm(); 
      mainForm.OnStart(); 
      Application.Run(mainForm); 
      mainForm.OnStop() 

     } 
    } 
} 
+0

这完美的作品!我不知道代码“暂停”,因此在Application.Run之后直到应用程序关闭。 – 2012-03-28 21:28:52

你可能希望从你的窗体的构造函数中运行的OnStart()方法。在您的表单关闭之前,您的当前代码不会被调用。与form.Close()的事件处理函数一样。

我建议你从MainForm_Load事件(或构造函数)调用这些方法。在关闭表单之前,Application.Run()方法之后什么都不会发生。

您不能在Application.Run(mainForm);之后添加cals ,它将无法按预期工作。 例如,将要运行的代码添加到FormOnLoad