在前面一篇随笔《WinForm界面开发之模块化分合》中,说到了参数配置管理模块内容,内容摘录如下:

====================================

参数配置模块 

在程序中,一般应用就是通过代码把相关的内容进行转义保存或者解析,以便呈现给用户更好的数据展示效果,这个模块比较通用,可分可合。

另外一个也比较常用的就是参数的配置管理模块,一般如果参数比较少,直接使用.NET的配置保存功能即可,如下图所示。

但这种方式只能保存比较少的内容,对于比较复杂的配置,一般很少采用这种模式存放程序的参数信息,这种方式存储的参数,如果不是放到一个独立的文件中,还存在一个不同步的现象。

其实我们还是可以把参数的配置功能作为一个独立的模块进行处理,我的程序就是经常这么干的,而且由于是相对比较独立,并在设计时候就支持参数的编辑及展示功能,因此效率大大提高,对使用用户来说,由于修改界面比较统一,而且参数的说明等很丰富,因此用户修改系统的配置参数友好性大大增强,界面效果如下所示:

使用用户看到的参数配置界面效果:

=========================================================

该参数配置模块在设计时刻和运行时刻都提供管理界面,非常方便参数的定义以及管理,参数一旦定义后,就是强类型的属性类型,也非常方便在代码中进行引用或者修改。

而另一方面,Control.FirefoxDialog控件却提供了很好的参数管理界面效果,比前面说到的参数配置管理模块界面更加友好,FirefoxDialog控件的界面效果如下所示:

该控件的Codeproject地址是(http://www.codeproject.com/KB/miscctrl/ControlFirefoxDialog.aspx?msg=1856449)

因此我们可以结合两者的特点,对参数配置管理模块的功能进行整合,界面采用 FirefoxDialog控件显示,而参数的获取或者设置则采用前面介绍的强类型参数配置管理模块,这样可以很好的利用各自的特点,重新构造出一个优秀的参数配置管理功能模块。整合后在我的新软件,绿苗帮电脑监控软件中的配置管理界面,最终的界面效果如下所示:

这个FireFoxDialog的参数配置界面,其实是有一个主窗体界面和几个Page类组成的,如主窗体的加载界面代码如下:

    public partial class FrmSettings : Form
    {
        public FrmSettings()
        {
            InitializeComponent();
        }

private void FrmSettings_Load(object sender, EventArgs e)
        {
            this.firefoxDialog1.ImageList = this.imageList1;

this.firefoxDialog1.AddPage("参数设置", new PageSetting());
            this.firefoxDialog1.AddPage("程序控制", new PageControl());
            this.firefoxDialog1.Init();
        }
    }

而对于每一个Page类,需要实现初始化控件以及“应用”的功能模块代码,如下面的实现所示:

        public override void OnInit()
        {
            SystemConfig.Default.Load();

#region 采集间隔时间
            string defaultInterval = "00:00:30";
            string intervalString = SystemConfig.Default.CaptureInterval;
            if (string.IsNullOrEmpty(intervalString))
            {
                intervalString = defaultInterval;
            }

string[] timeArray = intervalString.Split(':');
            this.txtHour.Value = Convert.ToInt32(timeArray[0]);
            this.txtMinute.Value = Convert.ToInt32(timeArray[1]);
            this.txtSecond.Value = Convert.ToInt32(timeArray[2]); 
            #endregion

if (!string.IsNullOrEmpty(SystemConfig.Default.ImageFormat))
            {
                this.ddlImageFormat.Text = SystemConfig.Default.ImageFormat;
            }
            else
            {
                this.ddlImageFormat.SelectedIndex = 0;
            }

this.txtExtension.Text = SystemConfig.Default.ImageFileExtension;
            this.txtSavePath.Text = SystemConfig.Default.PictureSavePath;
        }

public override void OnApply()
        {
            try
            {
                string timeSpan = string.Format("{0:D2}:{1:D2}:{2:D2}", 
                    Convert.ToInt32(this.txtHour.Value), Convert.ToInt32(this.txtMinute.Value), Convert.ToInt32(this.txtSecond.Value));
                SystemConfig.Default.CaptureInterval = timeSpan;
                SystemConfig.Default.ImageFileExtension = this.txtExtension.Text.Trim('.');
                SystemConfig.Default.ImageFormat = this.ddlImageFormat.Text;
                SystemConfig.Default.PictureSavePath = this.txtSavePath.Text;
                SystemConfig.Default.Save();
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                MessageUtil.ShowError(ex.Message);
            }
        }

而其中代码中的“SystemConfig.Default” 调用的操作是强类型的,编写代码的时候,有相关的说明,非常易于操作,不会出现混淆意思的说明,比直接操作XML类或者其他封装XML调用的辅助类方便不少,而且也具有设计时刻对参数项的定义以及修改界面的支持。该代码调用就是采用了原有的参数配置管理类,实现数据的获取或者修改的,这样把他们两者的特点都发挥出来,实现了更好的参数配置管理,根据具有可定制性和可扩展性。

结合Control.FirefoxDialog控件,构造优秀的参数配置管理模块相关推荐

  1. 第十一篇: Ajax Control Toolkit 控件包--下载与安装

    Ajax Control Toolkit 控件包 可以是说 == 超炫动态效果 !! 1.下载: 下载地址:http://www.codeplex.com/AtlasControlToolkit/Re ...

  2. AJAX Control Toolkit 控件学习(转自csdn山巅)

    AJAX Control Toolkit 控件学习 2006-1-16 ToggleButton 关联ASP.NET CheckBox控件 RoundedCorder 造就圆角框 PasswordSt ...

  3. ajax control toolkit vs2013,如何将Ajax Control Toolkit控件安装到Visual Studio 2005工具箱

    摘要:如何将 Ajax Control Toolkit 控件安装到 Visual Studio 2005 工具箱 How to Install Ajax Control Toolkit for Vis ...

  4. abap 在table control(表控件) 实现查找功能

    我们都知道ALV控件已经集成了查找功能 ,这对于在海量数据中查找某条数据是非常方便的,而 table control (表控件)没有提供这样的功能,那只能通过手工的方式在屏幕添加一个这样的功能,方便对 ...

  5. Hot Key Control快捷键控件

    hot key control用法: A "hot key control" is a window that enables the user to create a hot k ...

  6. UI⑥Control族控件TextBox

    Object->DispatcherObject->DependencyObject->Visual->UIElement->FrameworkElement->C ...

  7. ASP.NET画图控件 Chart Control 免费控件

    .NET3.5中中推出了图表控件,可以同时支持Web和WinForm两种方式,由于平时很少使用,一直没有玩玩,闲来无事,简单研究了下,感觉功能真的很强大,基本上可以满足各种图表的应用,感觉这么好用的东 ...

  8. Spin Control (上下控件)

    上下控件是Windows中最常用的控件之一.它只不过是一对箭头,用户可单击它来增加或减少控件的设定值.通常,紧靠着上下控件有一个编辑控件,称为伙 伴编辑控件或伙伴控件,用于显示用户输出的值.上下控件在 ...

  9. MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

    最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序 ...

  10. UI⑥Control族控件RichTextBox

    Object->DispatcherObject->DependencyObject->Visual->UIElement->FrameworkElement->C ...

最新文章

  1. asp连接mysql odbc,在ASP中连接MySQL数据库的方法,最好的通过ODBC方法
  2. [置顶] 某大型银行深化系统技术方案之二十:代码结构
  3. Dsure-HTML5网站前端开发框架,网页设计师福利
  4. 三星在研发VR一体机?眼动追踪公司曝出原型机
  5. Python练习3-XML-RPC实现简单的P2P文件共享
  6. linux的同步与互斥
  7. ArrayList与LinkedList的比较
  8. .NET 指南:转换操作符
  9. java中开根号求三角形_Java编程 如何计算三角形的内切圆半径?
  10. datetime对应的java类型_MySQL数据类型笔记
  11. vmci.sys版本不正确_王者荣耀:当前版本辅助的正确玩法思路,别再被骂,也别再梦游了...
  12. JSP中鼠标禁用代码
  13. Linux配置虚拟主机后,只能访问到主页怎么办?
  14. JAVA内存释放机制
  15. codeforces-constructive algorithms(构造算法.)
  16. android View使用shape作为背景不能指定单边圆角的xml
  17. HTML5七夕情人节表白网页制作【流星动画3D相册】HTML+CSS+JavaScript
  18. VMware ThinApp应用程序虚拟化工具
  19. 适合平板用的Android版本,安卓平板专享 推荐五款Pad版应用浏览器
  20. 【Quarkus】像子弹一样飞的启动速度之入门案例

热门文章

  1. 存储过程从入门到熟练(多个存储过程完整实例及调用方法)
  2. React-Native 在 mac 下 build 问题
  3. 模块_time模块/copy模块/os模块
  4. python 开源项目大全
  5. IOS7开发~Xcode5制作framework
  6. 转自JavaEye --Oracle函数大全
  7. Sublime text 3 注册码激活码 版本号3143
  8. 程序员面试金典--变位词排序
  9. 符号“”和const在函数里不同位置的用法
  10. FirstApp,iphone开发学习总结1,UIview添加UIimage