namespace PluginLib
{
    /// <summary>
    /// 遍历控件所有子控件并初始化或保存其值
    /// </summary>
    public class FormHelper
    {
        private static string Path
        {
            get
            {
                return Plugin.Path + "\\BufferFile.ini";
            }
        }
        static IniFile iniFile = null;

/// <summary>
        /// 保存控件值
        /// </summary>
        /// <param name="control"></param>
        public static void SaveControl(Control control)
        {
            FileStream fs;
            if (File.Exists(Path))
            {
                File.Delete(Path);
            }
            fs = File.Create(Path);
            fs.Close();
            iniFile = new IniFile(Path);
            GetControlValue(control);
            iniFile = null;
        }
        private static void GetControlValue(Control control)
        {
            foreach (Control ctl in control.Controls)
            {
                if (!ctl.HasChildren)
                {
                    if (ctl.Parent is System.Windows.Forms.NumericUpDown)
                    {
                        NumericUpDown tempNumberic = ctl.Parent as NumericUpDown;
                        iniFile.IniWriteValue("NumericUpDown", tempNumberic.Name, tempNumberic.Value.ToString());
                    }
                    else if (ctl is CheckBox)
                    {
                        iniFile.IniWriteValue("CheckBox", ctl.Name, ((CheckBox)ctl).Checked.ToString());
                    }
                    else if (ctl is RadioButton)
                    {
                        iniFile.IniWriteValue("RadioButton", ctl.Name, ((RadioButton)ctl).Checked.ToString());
                    }
                    else if (ctl is TextBox)
                    {
                        iniFile.IniWriteValue("TextBox", ctl.Name, ((TextBox)ctl).Text);
                    }
                    else if (ctl is ComboBox)
                    {
                        iniFile.IniWriteValue("ComboBox", ctl.Name, ((ComboBox)ctl).Text);
                    }
                    else if (ctl is TrackBar)
                    {
                        iniFile.IniWriteValue("TrackBar", ctl.Name, ((TrackBar)ctl).Value.ToString());
                    }
                    else if (ctl is CheckBoxX)
                    {
                        iniFile.IniWriteValue("CheckBoxX", ctl.Name, ((CheckBoxX)ctl).Checked.ToString());
                    }
                    else if (ctl is TextBoxX)
                    {
                        iniFile.IniWriteValue("TextBoxX", ctl.Name, ((TextBoxX)ctl).Text.ToString());
                    }
                    else if (ctl is RichTextBox)
                    {
                     
                        string[] strs = Regex.Split(((RichTextBox)ctl).Text.Trim(),"\n");
                        int i = 0;
                        foreach (string str in strs)
                        {
                            iniFile.IniWriteValue("RichTextBox="+ctl.Name, "row" + i, str);
                            i++;
                        }
                      
                    }

}
                else
                {
                    GetControlValue(ctl);
                }

}
        }
        /// <summary>
        /// 加载控件值
        /// </summary>
        /// <param name="control"></param>
        public static void LoadControl(Control control)
        {
            iniFile = new IniFile(Path);
            ForeachControl(control);
            iniFile = null;
        }
        private static void ForeachControl(Control control)
        {
            foreach (Control ctl in control.Controls)
            {
                if (!ctl.HasChildren)
                {
                    if (ctl.Parent is System.Windows.Forms.NumericUpDown)
                    {
                        NumericUpDown tempNumberic = ctl.Parent as NumericUpDown;
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("NumericUpDown", tempNumberic.Name)))
                        {
                            tempNumberic.Value = Convert.ToDecimal(iniFile.IniReadValue("NumericUpDown", tempNumberic.Name));
                        }
                    }
                    else if (ctl is CheckBox)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("CheckBox", ctl.Name)))
                            ((CheckBox)ctl).Checked = Convert.ToBoolean(iniFile.IniReadValue("CheckBox", ctl.Name));
                    }
                    else if (ctl is RadioButton)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("RadioButton", ctl.Name)))
                            ((RadioButton)ctl).Checked = Convert.ToBoolean(iniFile.IniReadValue("RadioButton", ctl.Name));
                    }
                    else if (ctl is TextBox)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("TextBox", ctl.Name)))
                            ((TextBox)ctl).Text = iniFile.IniReadValue("TextBox", ctl.Name);
                    }
                    else if (ctl is ComboBox)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("ComboBox", ctl.Name)))
                            ((ComboBox)ctl).Text = iniFile.IniReadValue("ComboBox", ctl.Name);
                    }

else if (ctl is TrackBar)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("TrackBar", ctl.Name)))
                            ((TrackBar)ctl).Value = Convert.ToInt32(iniFile.IniReadValue("TrackBar", ctl.Name));
                    }
                    else if (ctl is CheckBoxX)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("CheckBoxX", ctl.Name)))
                            ((CheckBoxX)ctl).Checked = Convert.ToBoolean(iniFile.IniReadValue("CheckBoxX", ctl.Name));
                    }
                    else if (ctl is TextBoxX)
                    {
                        if (!string.IsNullOrEmpty(iniFile.IniReadValue("TextBoxX", ctl.Name)))
                            ((TextBoxX)ctl).Text = iniFile.IniReadValue("TextBoxX", ctl.Name);
                    }
                    else if (ctl is RichTextBox)
                    {
                        int i = 0;
                        while(!string.IsNullOrEmpty(iniFile.IniReadValue("RichTextBox=" + ctl.Name, "row"+i)))
                        {
                            ((RichTextBox)ctl).Text += iniFile.IniReadValue("RichTextBox=" + ctl.Name, "row"+i)+"\n";
                            i++;
                        }
                     
                       
                          
                    }
                }
                else
                {
                    ForeachControl(ctl);
                }
            }
        }
    }
}

!!无须定义配置文件中的每个变量的读写操作,以下代码遍历界面中各个c#控件,自动记录其文本,作为配置文件保存的更多相关文章

  1. 继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

    继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的 ...

  2. 用MVVM模式开发中遇到的零散问题总结(4)——自制摄像头拍摄大头贴控件

    原文:用MVVM模式开发中遇到的零散问题总结(4)--自制摄像头拍摄大头贴控件 一直有个疑问,为什么silverlight对摄像头支持这么好,WPF却一个库都没有....于是我各种苦恼啊,各种Code ...

  3. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件

    类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...

  4. C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)控制 WebBrowser 控件的外观和行为

    在 CSDN 上经常看到以下两个问题:1.在 MFC 应用程序中,如果创建了一个 WebBrowser 控件(包括 CHtmlView 在内),如何可以把该控件的三维边框禁止掉?2.在 MFC 应用程 ...

  5. 解决问题--VS2012中一个Panel覆盖另一个Panel时拖动时容易造成两个控件成父子关系的避免

    在*.Designer.cs中,假如想把panel1覆盖到panel2上,但是VS自动让panel1成为panel2的子控件了,在文件中会有this.panel2.Controls.Add(this. ...

  6. sql中关于存在就不做操作的代码块

    前言: 在开发中,经常会对数据库表进行新增修改操作,那么如果表中的属性信息已然存在啦!就没必要去做重复的操作了... 代码块 BEGIN SELECT "COUNT"(*) int ...

  7. java中的静态变量、静态方法与静态代码块详解与初始化顺序

      我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  8. 025 Spark中的广播变量原理以及测试(共享变量是spark中第二个抽象)

    一:来源 1.说明 为啥要有这个广播变量呢. 一些常亮在Driver中定义,然后Task在Executor上执行. 如果,有多个任务在执行,每个任务需要,就会造成浪费. 二:共享变量的官网 1.官网 ...

  9. Java中的静态变量、静态方法、静态代码块

    转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对 ...

随机推荐

  1. ASP.NET对HTML元素进行权限控制(二)

    这是这个权限控制的第一步,扫描界面把要分配权限的元素的信息获取出来存入到数据库中. 这一步分三小步: (1).标出界面所要分配权限的元素 (2).扫描界面获取所要分配权限的元素信息.(ID,标题,层级 ...

  2. synchronized 用法,实例讲解

    package com.asiainfolinkage.ems.web.controller.base; import java.math.BigInteger; import java.util.D ...

  3. orcale 修改字段属性

    有些时候,因为没能预料到一些情况的变化,需要修改字段的类型.如果是varchar型,直接增加长度是可以的,但是如果需要修改成其他类型就不能这么做了. 思路:1.增加一个临时列,把需要修改的那个字段的数 ...

  4. GDB调试详解

    GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具. GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调 ...

  5. 【Ibatis】总结各种使用技巧

    [Ibatis]总结各种使用技巧 <alias> <typeAlias alias="YintaiMobile_FreeData_Model" type=&quo ...

  6. iOS 进阶 第九天(0408)

    0408 makekeyAndVisible解释 一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是 ...

  7. 《自学C语言》初级教程 - 目录

    我现在打算出一个C语言学习教程,目的是为了让初学者能够很容易和更深刻地理解C语言. 你可能有这样的疑问,网上不是有很多的初级教程吗,我需要这个吗?我的回答是:网上的C语言教程讲得不够全面,而且许多的初 ...

  8. 51nod 1257 背包问题 V3

    1257 背包问题 V3 基准时间限制:3 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 N个物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2.. ...

  9. cxf简单实例

    CXF是一个基于 Servlet 技术的 SOA 应用开发框架,简单来说,就是WebService的轻量级实现. 1.下载开发包:http://cxf.apache.org/download.html ...

  10. div 布局

    转:http://blog.csdn.net/mercop/article/details/7882000 HTML CSS + DIV实现整体布局 1.技术目标: 开发符合W3C标准的Web页面 理 ...