自从上篇随笔《厚积薄发,丰富的公用类库积累,助你高效进行系统开发(1)》 一文以来,得到同行很多人的鼎力支持和关注,并且在大家的推动下,这篇文章也是上榜博客头条、编辑推荐、10天内推荐排行等荣誉,很多人对这些类库很是感 兴趣,也希望进一步详细介绍相关类库的使用。本随笔系列将逐步介绍相关的类库的详细使用,并逐步整理成CHM的帮助文档,作为类库使用的指引手册,同时我 会对类库进行进一步的丰富、提炼和优化,随笔将逐步发送,感谢大家的支持和鼓励。

1、程序配置管理辅助类 AppConfig 

实现效果
     1、 本辅助类主要是用来方便获取或设置系统配置项的辅助类,实现快速读写配置文件的内容,可以用于读取*.exe.Config文件或者Web.config的文件内容,或者可以读取指定文件的配置项。

2、 辅助类默认从当前目录中按顺序检索Web.Config和*.exe.Config文件。如果找到一个,则使用它作为默认的配置文件,不需要指定文件路径。

3、 读取的文件格式是一般的XML配置文件格式,如下所示。

  1. <?xml version="1.0" encoding="utf-8" ?>   
    <configuration>   
      <configSections>   
        <section name="dataConfiguration"   
                 type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>   
      </configSections>   
      <connectionStrings>   
        <add name="DataAccess" providerName="System.Data.SqlClient"   
             connectionString="Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=123456"/>   
      </connectionStrings>   
      <dataConfiguration defaultDatabase="DataAccess"/>   
       
      <appSettings>   
        <!--软件名称-->   
        <add key="ApplicationName" value="深田之星仓库管理系统"/>   
        <!--开发商名称-->   
        <add key="Manufacturer" value="广州爱启迪技术有限公司"/>   
        <!--字典、权限组件的数据库类型:access、sqlserver等,默认为sqlserver可不写-->   
        <add key="ComponentDbType" value="sqlserver"/>   
      </appSettings>   
    </configuration>  

实现代码

1、 读取配置项目。

AppConfig config = new AppConfig();    
string Manufacturer = config.AppConfigGet("Manufacturer");    
string ApplicationName = config.AppConfigGet("ApplicationName");    
string AppWholeName = string.Format("{0}-{1}", Manufacturer, ApplicationName);  
2、 读取复杂的连接字符串配置,如上面的EnterpriseLibrary的连接字符串 DataAccess 配置项目的ConnectString。 
/// <summary>    
/// 测试数据库是否正常连接    
/// </summary>    
/// <returns></returns>    
public static bool TestConnection(string connectionString)    
{    
    bool result = false;    
   
    using (DbConnection connection = new SqlConnection(connectionString))    
    {    
        connection.Open();    
        if (connection.State == System.Data.ConnectionState.Open)    
        {    
            result = true;    
        }    
    }    
   
    return result;    
}    
   
public static bool TestConnection()    
{    
    AppConfig config = new AppConfig();    
    return TestConnection(config.GetConnectionString("DataAccess"));    
}  
3、 写入配置项内容。
AppConfig config = new AppConfig();    
//保存地址(标准调用)    
config.AppConfigSet("PictureRootDir", this.txtPath.Text);    
   
//保存EnterpriseLibray数据库配置项(自定义设置)    
string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}Database1.mdb;User ID=Admin;Jet OLEDB:Database Password=;", System.AppDomain.CurrentDomain.BaseDirectory);    
config.SetConnectionString("DataAccess", connectionString);    
//更新配置文件,以便起效    
ConfigurationManager.RefreshSection("dataConfiguration");    
ConfigurationManager.RefreshSection("connectionStrings");   
ConfigurationManager.RefreshSection("appSettings"); 

2、消息提示对话框辅助类 MessageUtil

 实现效果

1、本辅助类主要是用来方便实现标准统一的消息提示对话框,由于各种按钮的样式、标题都进行了统一分装,因此调用的时候,这些参数都可以不用考虑,省却很多繁琐的参数指定,是Winform开发中非常常用的一个类库辅助类。

2、封装的消息提示对话框包括个各种常用的对话框,如下所示:

实现代码

MessageUtil.ShowTips("提示信息对话框");    
MessageUtil.ShowWarning("警告消息提示框");    
MessageUtil.ShowError("错误消息提示框");    
   
MessageUtil.ShowYesNoAndTips("提示对话框,有Yes/No按钮");    
MessageUtil.ShowYesNoAndWarning("警告对话框,有Yes/No按钮");    
MessageUtil.ShowYesNoAndError("错误对话框,有Yes/No按钮");    
MessageUtil.ShowYesNoCancelAndTips("提示对话框,有Yes/No/Cancel按钮");    
   
MessageUtil.ConfirmYesNo("确认对话框,有Yes/No对话框");  
MessageUtil.ConfirmYesNoCancel("确认对话框,有Yes/No/Cancel对话框"); 

 3、日历类辅助类 CCalendar

  实现效果

1、 本辅助类主要是用来方便显示日期时间、农历、生肖的日历类,并可以计算农历很多属性,并且通过一个函数提供一个全面的日期信息,可以用于装饰界面的效果。

2、  其效果如下所示

 实现代码 

CCalendar cal = new CCalendar();  
this.lblCalendar.Text = cal.GetDateInfo(System.DateTime.Now).Fullinfo;  

一般节日会提示相关的节日信息,另外可以通过修改XML文件,实现对节日、时间提示等信息调整。

<?xml version="1.0" encoding="gb2312" ?>   
<HELLO>   
   
  <!-- 公历节日开始 -->   
  <AD>   
    <feast day="0101" name="元旦" sayhello="yes">   
      <hello>新年好!祝您在新的一年里身体健康,事业进步!</hello>   
      <!-- 从网站根目录算起 -->   
      <img>./img/theme/0101.gif</img>   
    </feast>   
    <feast day="0202" name="世界湿地日" sayhello="no">   
      <img></img>   
      <hello></hello>   
    </feast>   
    <feast day="0210" name="国际气象节" sayhello="no">   
      <img></img>   
      <hello></hello>   
    </feast>   
    <feast day="0214" name="情人节" sayhello="yes">   
      <hello>祝天下有情人终成眷属!</hello>   
      <img>./img/theme/0214.gif</img>   
    </feast>   
    <feast day="0301" name="世界图书日" sayhello="no">   
      <img></img>   
      <hello></hello>   
    </feast>   
.............

4、托盘图标辅助类 NotifyIconHelper 

 实现效果

1、 本辅助类主要是用来方便动态设置托盘图标。该辅助类用于一些实时连接要求或者状态变化能够及时通过图表来显示的程序,通过闪动的图标及文本,可以有效提示用户相关的程序状态,提供用户的使用体验。

2、  动态设置托盘图标,其效果如下所示

 实现步骤

1、在主窗体添加一个NotifyIcon组件,并设置好相关的属性,如下所示

2、  在代码引用相关的代码实现动态调用。

 实现代码

public partial class FrmMain : Form    
{    
    private NotifyIconHelper notifyHelper;    
    private const string ClientName = "数据采集终端";//PC式采集器终端    
   
    public frmMain()    
    {    
        InitializeComponent();    
   
        this.Text = ClientName;    
        //初始化托盘图标    
        notifyHelper = new NotifyIconHelper(this.notifyIcon1);    
        notifyHelper.Icon_Conntected = Resources.Connected;    
        notifyHelper.Icon_Shrink1 = Resources.shrink1;    
        notifyHelper.Icon_Shrink2 = Resources.shrink2;    
        notifyHelper.Icon_UnConntect = Resources.unConnected;    
        notifyHelper.Text_Conntected = string.Format("{0}:终端已经连接", ClientName);    
        notifyHelper.Text_UnConntect = string.Format("{0}:终端未连接", ClientName);    
        notifyHelper.NotifyStatus = NotifyIconHelper.Status.TwinkleNotice;    
    }    
   
    /// <summary>    
    /// 设置托盘图标的状态    
    /// </summary>    
    /// <param name="status"></param>    
    public void SetNotifyStatus(NotifyIconHelper.Status status)    
    {                
        notifyHelper.NotifyStatus = status;    
   
        if (status == NotifyIconHelper.Status.Offline)    
        {    
            this.Invoke(new MethodInvoker(delegate()    
            {    
                this.Icon = notifyHelper.Icon_UnConntect;    
            }));                    
        }    
        else if (status == NotifyIconHelper.Status.Online)    
        {    
            this.Invoke(new MethodInvoker(delegate()    
            {    
                this.Icon = notifyHelper.Icon_Conntected;    
            }));       
        }    
    }  

5、DataTable操作辅助类 DataTableHelper 

实现效果

1、本辅助类主要是用来方便对DataTable进行相关操作的辅助类,该类是非常常用的工具类,常用与数据显示、转换和报表生成等操作中。

2、  提供的操作,包括有创建表、DataTable和实体类集合IList<T>相互转化、表排序、表过滤等操作,以求达到快速进行DataTable操作的目的。

实现代码

1、 根据字段创建表对象,多个列用逗号(,)分开,默认为表对象的列为string。

string columns = @"流水号,备注,供货商,操作员,库房名称,备件编号(pm码),备件名称,图号,规格型号,材质,备件属类,备件类别,
单位,最新单价(元),入库数量,总价,入库日期,来源,库位,部门,使用位置";    
DataTable dt = DataTableHelper.CreateTable(columns);   

2、根据字段创建表对象,多个列用逗号(,)分开。如需要制定列的类型,在字段后加上“|int”格式的字符。

string tableColumns = "ID|int,ItemNo,ItemName,StockQuantity|int,Manufacture,MapNo,Specification,Material,ItemBigType,ItemType,
Unit,Price|decimal,Source,StoragePos,UsagePos,Note,WareHouse,Dept";    
DataTable dt = DataTableHelper.CreateTable(tableColumns);  
3、 实体类转DataTable对象操作ListToDataTable,其对应的反操作函数DataTableToList使用方法类似。

string where = GetSearchSql();    
IList<CustomerInfo> list = BLLFactory<Customer>.Instance.Find(where, this.winGridViewPager1.PagerInfo);    
DataTable dt = DataTableHelper.ToDataTable<CustomerInfo>(list);    
this.winGridViewPager1.DataSource = dt.DefaultView;    
this.winGridViewPager1.dataGridView1.Refresh(); 

4、 DataTable对象排序操作SortedTable,可对表多列进行排序操作。

string where = GetSearchSql();    
IList<CustomerInfo> list = BLLFactory<Customer>.Instance.Find(where, this.winGridViewPager1.PagerInfo);    
DataTable dt = DataTableHelper.ToDataTable<CustomerInfo>(list);    
DataTable dtSort = DataTableHelper.SortedTable(dt, new string[]{"Number asc", "Type desc"});

最新公用类库DLL+XML注释文件下载地址是:

http://files.cnblogs.com/wuhuacong/WHC.OrderWater.Commons.rar

由于篇幅原因,下篇继续整理发布出来,谢谢支持。

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)(转)相关推荐

  1. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类...

    俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程相关类,本篇 ...

  2. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(10)---各种线程同步的集合类...

    俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程安全的各类同 ...

  3. 代码分析 公用类库

    公用类库代码 常用方法namespace UtilityLibary {public interface ILog{int FileSize { get; set; }/// <summary& ...

  4. jenkins~管道Pipeline里使用公用类库

    Pipeline使用了groovy语法,同时可以使用所有jenkins插件在groovy里进行调用,可以说通过UI可以实现的功能使用pipeline也可以实现,这一点我在上一篇文章里已经说明,今天主要 ...

  5. WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    2019独角兽企业重金招聘Python工程师标准>>> 下载WijmoJS 2019 v1 WijmoJS是为企业应用程序开发而推出的一系列包含HTML5和JavaScript的开发 ...

  6. 助创cms众筹 php,【教程】助创cms众筹系统完整测试流程详解

    原标题:[教程]助创cms众筹系统完整测试流程详解 这两年提到互联网金融,不得不提的一个词语:众筹.的确相比飘忽不定的股市和频发跑路P2P,众筹具备低风险,收益高,周期短等各方面的优势.为了帮助更多朋 ...

  7. 基于公用通信网络的区域级 C-V2X应用系统技术要求 应用系统技术要求

    1 范围 本文件规定了基于公用通信网络的区域级C-V2X应用系统的技术.功能和场景要求. 本文件适用于基于公用通信网络的区域级C-V2X应用系统技系统设计和建设,为智能网联汽车与产业相关部门和企业提供 ...

  8. 助航灯光监控系统服务器,机场助航灯光计算机监控系统的设计与实现

    摘要: 机场助航灯是保障飞机在夜间和复杂天气条件下顺利进行起飞.着陆.滑行的目视助航设备,为飞行员提供跑道位置.方向和对正引导,以便飞行员在目视可达的情况下安全着陆.助航灯调光器是保证助航灯光可靠运行 ...

  9. 学习效率不靠打鸡血,这些建议助你高效学习

    既然选择了考研,便只能风雨兼程.在短暂的备考时间中,高效地学习方法至关重要.鸡血.菠菜统统放一边,只需6点便可助你高效学习. 考研很辛苦?复习没效果?其实任何事的起点和核心都是独立思考,对于考研你还远 ...

最新文章

  1. 翻译翻译:什么叫架构?
  2. ubuntu安装snort
  3. DEDECMS自定义表单提交后的跳转链接如何修改
  4. js escape 与php escape
  5. 双面黄琳:世界顶级女黑客,两个孩子的迟钝妈妈
  6. mysql表空间权限_MySQL InnoDB表空间加密示例详解
  7. 【进阶】 --- 多线程、多进程、异步IO实用例子
  8. ElasticSearch启动报错at least one of [discovery.seed_hosts, discovery.seed_provid---ElasticSearch工作笔记032
  9. C++面试题:多态,虚函数,纯虚函数
  10. 2021年SWPUACM暑假集训day2并查集算法
  11. Centos 6.5之LAMP学习笔记
  12. centos完全卸载mysql_centos下完全卸载mysql
  13. 天正电气图例_天正电气设计施工图中常用线路敷设方式
  14. python中round(x、2)是什么意思_python中round函数具体使用详解
  15. PHP 开发新版个人博客
  16. 数据管理平台(DMP)
  17. Verilog语言入门
  18. 金蝶生成凭证模板_金蝶凭证导入模板
  19. 11月24日学习笔记_map/reduct的应用于使用
  20. java-操作 Excel

热门文章

  1. 有关matlab拟合工具箱的使用
  2. 【直播课】6小时教你熟知Anchor free理论基础,掌握项目实战技巧
  3. 全球及中国乳酸异辛酯行业发展趋势及投资前景规划报告2022-2027年
  4. 前端必读:浏览器内部工作原理
  5. mysql+index组合索引_MySQL 优化之 index merge(索引合并)
  6. 个性化服务谋定移动电子商务-李玉庭:经信研究重整购物
  7. Python学习日记(六) 浅深copy
  8. 字典和json 的区别 和转换
  9. 动态代理:JDK动态代理和CGLIB代理的区别
  10. opencv 中affine函数实现旋转和平移