本文转自:http://www.cnblogs.com/JamesLi2015/archive/2011/11/15/2249991.html
自己偶然的一个想法,坚持做出了这个软件。如果你对技术细节及其应用感兴趣,这个主题不会让你失望。一个商业应用程序所需要的特性,它都具备。下面介绍WinForms的数据绑定技术,有了这一项技术,写出的代码简洁,优美。
请看Data Loader的Settings窗体,它的界面效果如下图所示
这个窗体主要保存Data Loader的设置信息。Downloaded Path是保存下载之后的文档的路径,在下载博客文档的过程中,它会去这里查看正在下载的文档是否在这里存在,如果是则跳过下载;Connection String是连接字符串,为正确连接到文档服务器;Failed Cleanup File是在加载文档到服务器过程中,如果不是RTF格式,则需要考虑转换格式,转换的中间文件是不需要的,在导入到数据库中之后,要清除掉,如果没有清除成功,可能是进程被占用,就保存在这里,以便在合适的时机,再对它进行清理;PDF Watch Path是保存PDF Watch的路径,它用于监控PDF变化的路径,以提供转换导入服务;Auto Import after download complete是下载完成后,是否启动导入程序;Start application when computer starts则是添加启动选面,开机时自动启动。
来看一下它的代码实现,以体会数据绑定技术。
拖动一个BindingSource控件到窗体中,设置它的数据源为Object,并指向SettingEntity对象。如上图所示,对下载路径进行数据绑定,把它的Text属性绑定到数据源的DownloadedPath属性中,其它的几个属性也是这样操作。
在窗体的加载代码中,写如下的代码
SettingManager mgr = new SettingManager(); private void SettingOption_Load(object sender, EventArgs e) { try { SettingEntity setting = mgr.GetSetting(); settingBindingSource.DataSource = setting; } catch { } }
在窗体的关闭代码中,写出保存代码,如下所示
private void SettingOption_FormClosing(object sender, FormClosingEventArgs e) { try { SettingEntity setting = settingBindingSource.DataSource as SettingEntity; mgr.SaveSetting(setting); } catch { } }
好了,这就是所有的程序代码。有这这项技术,可以为应用程序节省大量的代码。回想以前的程序设计,通常是这样写的
private void SettingOption_Load(object sender, EventArgs e) { try { SettingEntity setting = mgr.GetSetting(); txtdownloadedPath.Text=setting.DownloadedPath; } catch{ } }
你看到了,需要手工绑定属性到文本编辑控件中,同样的,在关闭窗体时,你还需要写这样的代码
private void SettingOption_FormClosing(object sender, FormClosingEventArgs e) { try { SettingEntity setting=mgr.GetSetting(); setting.DownloadedPath=txtDownloadedPath.Text; } catch{ }
}
这还只是一个控件,如果在几十个,同样的代码要写很多次。但是如果你应用WinForms内置的数据绑定技术,情况会大大好转,它可以节省很多不必要的代码,维护起来也方便。