当前位置:编程学习 > C#/ASP.NET >>

简化程序开发的框架Custom

    最近一直想写个框架,可惜没有时间。框架的目的就是简化开发,解决一些繁琐的操作,封装一些实用的功能。

     现在把几个小功能封装了一下(针对WinForm),共享给大家,而且对框架如果有什么意见请留言提出。

     暂时解决问题如下:

     1.多窗口管理(应用程序启动时加载所有窗口实例,可以直接通过一个字符串操控窗体实例)

     2.保证窗口实例单一(每个窗口的实例只被加载一次,保证不会重复调用,浪费内存。)

     3.多窗体之间数据共享(在窗体1设定的一个值,在其他窗体同样可以得到)

     使用方式:

     1.每个窗体必须继承 Custom.BaseForm

     2.修改应用程序入口代码如下

 


    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中被调用。代码如下:

 


            //设置一个属性,此属性可以在任何窗体访问
            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  --------------------编程问答-------------------- up --------------------编程问答-------------------- UP --------------------编程问答-------------------- 关注... --------------------编程问答-------------------- mark...
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,