Application類(位於System.Windows.Forms命名空間)公開了Run方法,可以調用該方法來調度應用程序進入消息循環。Run方法有三個重載
1、第一個重載版本不帶任何參數,比較少使用
2、static void Run(System.Windows.Forms.Form mainForm) 調用這個重載,只需要吧希望作為主窗口的Form實例(包括從Form類派生的類)
傳遞給mianForm參數即可。一旦mainForm關閉,整個消息循環就會退出,Run方法返回,應用程序就會退出。
3、static void Run(System.Windows.Forms.ApplicationContext context) 這是Run方法中重載最靈活的。通常的做法是從ApplicationContext類
派生,並寫入實現代碼。ApplicationContext類也允許設置一個Form實例制作為主窗口,也可以不設置主窗口。這個Run方法會在ApplicationContext
對象進行消息循環。調用ApplicationContext類的ExitThread方法會導致ApplicationContext上的消息循環終止。
手動創建一個類:產生三個窗口,只有把三個窗口全部關閉程序才終止運行(基於第三種Run方法)
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; //從ApplicationContext派生一個類出來, public class MyApplication : ApplicationContext { static int WindowsCount;//用於記錄窗口個數 private Form Windows1, Windows2, Windows3;//申請三個Form窗口 private只限於本類成員訪問 //構造函數,分別實例化三個窗口 public MyApplication() { WindowsCount = 0; /*實例化Windows1*/ Windows1 = new Form(); Windows1.Text = "窗口1"; Windows1.Size = new System.Drawing.Size(300, 300); Windows1.Location = new System.Drawing.Point(50, 100); Windows1.Name = "Form1"; Windows1.FormClosed += OnMainFormClosed;//處理事件(窗口關閉的處理事件) WindowsCount += 1;//窗口總數加一 Windows2 = new Form(); Windows2.Text = "窗口2"; Windows2.Size = new System.Drawing.Size(300, 300); Windows2.Location = new System.Drawing.Point(50, 100); Windows2.Name = "Form2"; Windows2.FormClosed += OnMainFormClosed;//處理事件(窗口關閉的處理事件) WindowsCount += 1;//窗口總數加一 Windows3 = new Form(); Windows3.Text = "窗口3"; Windows3.Size = new System.Drawing.Size(300, 300); Windows3.Location = new System.Drawing.Point(50, 100); Windows3.Name = "Form3"; Windows3.FormClosed += OnMainFormClosed;//處理事件(窗口關閉的處理事件) WindowsCount += 1;//窗口總數加一 //顯示3個窗口 Windows1.Show(); Windows2.Show(); Windows3.Show(); } private void OnMainFormClosed(object sender,FormClosedEventArgs e) { WindowsCount -= 1; if (WindowsCount == 0) ExitThread();//調用ExitThead終止消息循環 } } namespace application1 { static class Program { /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MyApplication()); } } }


