簡化開發的架構 “Custom”

來源:互聯網
上載者:User

     原諒我再次浪費首頁的淨土,我是想得到點大家的意見,如果覺得有問題,我馬上撤下首頁放新手區。

     最近一直想寫個架構,可惜沒有時間。架構的目的就是簡化開發,解決一些繁瑣的操作,封裝一些實用的功能。

     現在把幾個小功能封裝了一下(針對WinForm),共用給大家,而且對架構如果有什麼意見請留言提出。

     暫時解決問題如下:

     1.多視窗管理(應用程式啟動時載入所有視窗執行個體,可以直接通過一個字串操控表單執行個體)

     2.保證視窗執行個體單一(每個視窗的執行個體只被載入一次,保證不會重複調用,浪費記憶體。)

     3.多表單之間資料共用(在表單1設定的一個值,在其他表單同樣可以得到)

     使用方式:

     1.每個表單必須繼承 Custom.BaseForm

     2.修改應用程式入口代碼如下

 

Program
    static class Program
    {
        /// <summary>
        /// 應用程式的主進入點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //得到所有表單的執行個體
            Custom.BaseForm.BaseForms = Custom.SessionFactory.getForms();

            //設定程式主啟動表單
            Custom.BaseForm.MainForm = "UI.Form1";
            Application.Run(Custom.SessionFactory.LoadMainForm());
        }
    }

     在主表單運行前需要載入所有表單執行個體,並且設定應用程式的主表單全類名(包括命名空間)

     只需要兩個步驟就可以使用本架構,不需要做任何設定檔。

     Custom.BaseForm 中提供了一個靜態屬性BaseForms,類型Dictionary<string, BaseForm>,通過此屬性可以得到一個表單的執行個體,代碼如下:

     

得到表單執行個體
        private void button1_Click(object sender, EventArgs e)
        {
            BaseForms["Form2"].Show();
        }

     通過一個字串名稱就可以得到一個執行個體,這樣方便在應用程式中動態調用,而不是採用以往的寫入程式碼方式。

 

     BaseForm類提供了setAttribute和getAttribute方法,setAttribute可以以索引值對方式儲存值,這個值可以在應用程式任何一個繼承自BaseForm中被調用。代碼如下:

 

Code
            //設定一個屬性,此屬性可以在任何表單訪問
            this.setAttribute("say", "Hello,i am form1");

 

     儲存鍵與值為Object類型,取值方式如下。

 

取值
string str=this.getAttribute("say").toString();

 

     為了保證表單執行個體的單一性,而且還能保證點擊表單退出(右上方的X)時能夠及時釋放資源,所以重寫了System.Windows.Forms.Form的Dispose(bool disposing)方法。這樣可以保證被Show出的表單資源及時釋放並且能夠保證下次繼續調用。而點擊應用程式主表單退出時則關閉應用程式。

 

     介紹寫的比較粗糙,給大家發個使用例子,如果有問題和意見請留言!

     案例下載:http://files.cnblogs.com/dirain/CustomTest.rar

     意見反饋及擴充交流群:63864931 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.