c# Applicatcontext類


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());
        }
    }
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM