using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace FormSetting
{
class UIPersist
{
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,
string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retVal,
int size, string filePath);
List<Control> ctrlList = new List<Control>();
private Form parentForm;
private string fileName;
public string FileName
{
get { return fileName; }
set { fileName = value; }
}
private string section;
public string Section
{
get { return section; }
set { section = value; }
}
public UIPersist(Form parent)
{
Config(parent,
Path.ChangeExtension(Application.ExecutablePath, "ini"), "UIPersist");
}
public void Config(Form parent, string file, string sect)
{
parentForm = parent;
fileName = file;
section = sect;
foreach (Control c in parent.Controls)
{
if (c is TextBox || c is DateTimePicker || c is CheckBox)
AddBinding(c);
}
parentForm.Load += new EventHandler(parentForm_Load);
parentForm.FormClosed += new FormClosedEventHandler(parentForm_FormClosed);
Load();
}
void parentForm_FormClosed(object sender, FormClosedEventArgs e)
{
Save();
}
void parentForm_Load(object sender, EventArgs e)
{
Load();
}
public void IniWriteValue(string Key, string Value)
{
WritePrivateProfileString(this.section, Key, Value, this.fileName);
}
public string IniReadValue(string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(this.section, Key, "", temp, 255, this.fileName);
return temp.ToString();
}
public void AddBinding(Control ctrl)
{
ctrlList.Add(ctrl);
}
public void Load()
{
for (int i = 0; i < ctrlList.Count; i++ )
{
Control c = ctrlList[i];
if (c is TextBox || c is DateTimePicker)
c.Text = IniReadValue(c.Name);
else if (c is CheckBox)
(c as CheckBox).Checked = IniReadValue(c.Name) == "1";
else
{
throw new ApplicationException("Control type not supported:" + c.GetType().ToString());
}
}
}
public void Save()
{
for (int i = 0; i < ctrlList.Count; i++)
{
Control c = ctrlList[i];
if (c is TextBox || c is DateTimePicker)
IniWriteValue(c.Name, c.Text);
else if (c is CheckBox)
IniWriteValue(c.Name, (c as CheckBox).Checked ? "1" : "0");
}
}
}
}
<script src="http://shots.snap.com//client/inject.js?site_name=0" type="text/javascript"></script><script src="http://shots.snap.com//client/inject.js?site_name=0" type="text/javascript"></script>
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace FormSetting
{
class UIPersist
{
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,
string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retVal,
int size, string filePath);
List<Control> ctrlList = new List<Control>();
private Form parentForm;
private string fileName;
public string FileName
{
get { return fileName; }
set { fileName = value; }
}
private string section;
public string Section
{
get { return section; }
set { section = value; }
}
public UIPersist(Form parent)
{
Config(parent,
Path.ChangeExtension(Application.ExecutablePath, "ini"), "UIPersist");
}
public void Config(Form parent, string file, string sect)
{
parentForm = parent;
fileName = file;
section = sect;
foreach (Control c in parent.Controls)
{
if (c is TextBox || c is DateTimePicker || c is CheckBox)
AddBinding(c);
}
parentForm.Load += new EventHandler(parentForm_Load);
parentForm.FormClosed += new FormClosedEventHandler(parentForm_FormClosed);
Load();
}
void parentForm_FormClosed(object sender, FormClosedEventArgs e)
{
Save();
}
void parentForm_Load(object sender, EventArgs e)
{
Load();
}
public void IniWriteValue(string Key, string Value)
{
WritePrivateProfileString(this.section, Key, Value, this.fileName);
}
public string IniReadValue(string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(this.section, Key, "", temp, 255, this.fileName);
return temp.ToString();
}
public void AddBinding(Control ctrl)
{
ctrlList.Add(ctrl);
}
public void Load()
{
for (int i = 0; i < ctrlList.Count; i++ )
{
Control c = ctrlList[i];
if (c is TextBox || c is DateTimePicker)
c.Text = IniReadValue(c.Name);
else if (c is CheckBox)
(c as CheckBox).Checked = IniReadValue(c.Name) == "1";
else
{
throw new ApplicationException("Control type not supported:" + c.GetType().ToString());
}
}
}
public void Save()
{
for (int i = 0; i < ctrlList.Count; i++)
{
Control c = ctrlList[i];
if (c is TextBox || c is DateTimePicker)
IniWriteValue(c.Name, c.Text);
else if (c is CheckBox)
IniWriteValue(c.Name, (c as CheckBox).Checked ? "1" : "0");
}
}
}
}
<script src="http://shots.snap.com//client/inject.js?site_name=0" type="text/javascript"></script><script src="http://shots.snap.com//client/inject.js?site_name=0" type="text/javascript"></script>