// popup message modeless dialog
static void PopUpMsg(string msg)
{
TextBox editBox = new TextBox();
editBox.ReadOnly = true;
editBox.Multiline = true;
editBox.Dock = DockStyle.Fill;
editBox.Text = msg;
Form dlg = new Form();
dlg.FormBorderStyle = FormBorderStyle.FixedSingle;
dlg.Text = Application.ProductName;
dlg.Controls.Add(editBox);
dlg.Show();
}
// save control values on form close
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
File.WriteAllLines(Path.ChangeExtension(Application.ExecutablePath, "formvalue.csv"),
from c in this.Controls.OfType<Control>()
where c is TextBox || c is DateTimePicker || c is CheckBox
select string.Format("{0}={1}", c.Name, (c is CheckBox) ? (c as CheckBox).Checked.ToString() : c.Text)
);
}
// load control values startup
private void Form1_Load(object sender, EventArgs e)
{
if(File.Exists(Path.ChangeExtension(Application.ExecutablePath, "formvalue.csv")))
{
var cfgMap =
(from line in File.ReadAllLines(Path.ChangeExtension(Application.ExecutablePath, "formvalue.csv"))
let tokens = line.Split('=')
select new { Key=tokens[0].Trim(), Value=tokens[1].Trim() }).
ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Controls.Cast<Control>().ToList<Control>().ForEach(ctrl =>
{
if(cfgMap.ContainsKey(ctrl.Name))
{
if (ctrl is TextBox || ctrl is DateTimePicker)
ctrl.Text = cfgMap[ctrl.Name];
else if (ctrl is CheckBox)
(ctrl as CheckBox).Checked = "true".Equals(cfgMap[ctrl.Name], StringComparison.OrdinalIgnoreCase);
}
});
}
}
// simple serialization example
namespace simple_serialize
{
[Serializable]
class MyObject
{
public string Name;
public double Weight;
}
class Program
{
static void Main(string[] args)
{
MyObject obj = new MyObject();
obj.Name = "David";
obj.Weight = 60;
string soapFName = "objects.soap";
using(FileStream fs = File.Create(soapFName))
{
IFormatter fmt = new SoapFormatter();
fmt.Serialize(fs, obj);
}
MyObject objLoad = null;
using (FileStream fs = File.OpenRead(soapFName))
{
IFormatter fmt = new SoapFormatter();
objLoad = (MyObject)fmt.Deserialize(fs);
}
if(objLoad != null)
{
Console.WriteLine("name = {0}, weight = {1}", objLoad.Name, objLoad.Weight);
}
Console.ReadLine();
}
}
}