博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

本文转自:http://www.cnblogs.com/JamesLi2015/archive/2011/11/15/2249991.html

 

 

自己偶然的一个想法,坚持做出了这个软件。如果你对技术细节及其应用感兴趣,这个主题不会让你失望。一个商业应用程序所需要的特性,它都具备。下面介绍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内置的数据绑定技术,情况会大大好转,它可以节省很多不必要的代码,维护起来也方便。