简化程序开发的框架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#