知识管理系统Data Solution研发日记之十一 数据绑定技术的应用
自己偶然的一个想法,坚持做出了这个软件。如果你对技术细节及其应用感兴趣,这个主题不会让你失望。一个商业应用程序所需要的特性,它都具备。下面介绍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内置的数据绑定技术,情况会大大好转,它可以节省很多不必要的代码,维护起来也方便。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库