zoukankan      html  css  js  c++  java
  • 知识管理系统Data Solution研发日记之十一 数据绑定技术的应用

    自己偶然的一个想法,坚持做出了这个软件。如果你对技术细节及其应用感兴趣,这个主题不会让你失望。一个商业应用程序所需要的特性,它都具备。下面介绍WinForms的数据绑定技术,有了这一项技术,写出的代码简洁,优美。

    请看Data Loader的Settings窗体,它的界面效果如下图所示

    image

    这个窗体主要保存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则是添加启动选面,开机时自动启动。

    来看一下它的代码实现,以体会数据绑定技术。

    image

    拖动一个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内置的数据绑定技术,情况会大大好转,它可以节省很多不必要的代码,维护起来也方便。

  • 相关阅读:
    Qt中实现启动画面(延时过程中要加上app.processEvents())
    Qt5中生成和使用静态库
    360云后台(使用HTTP Cache服务器)
    lucene 从2.4.0—3.6.0—4.3.1版本升级
    从C++到Qt(命令行编译,讲解原理)
    赵伟国的逻辑
    windows 7 系统进程服务详解
    QT 4.87 changes
    海量小文件存储
    最大连续子序列乘积
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/2249991.html
Copyright © 2011-2022 走看看