2012-03-28 96 views
2

在我的應用程序,我把它稱之爲啓動方法,我稱之爲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(); 
     } 
    } 
} 

回答

5

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

1

你可能希望從你的窗體的構造函數中運行的OnStart()方法。在您的表單關閉之前,您的當前代碼不會被調用。與form.Close()的事件處理函數一樣。

1

我建議你從MainForm_Load事件(或構造函數)調用這些方法。在關閉表單之前,Application.Run()方法之後什麼都不會發生。

1

您不能在Application.Run(mainForm);之後添加cals ,它將無法按預期工作。 例如,將要運行的代碼添加到FormOnLoad