using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Text; using System.Windows.Forms; namespace SpecialFoldersSample { public partial class MainForm : Form { public MainForm() { InitializeComponent(); // Generally "C:\Program Files" string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); } private void viewSpecialFoldersButton_Click(object sender, EventArgs e) { (new SpecialFoldersForm()).ShowDialog(); } private void MainForm_Load(object sender, EventArgs e) { // Restore form settings try { string fileName = Application.LocalUserAppDataPath + @"\MainForm.txt"; using( StreamReader reader = new StreamReader(fileName) ) { // Don't let the form's position be set automatically this.StartPosition = FormStartPosition.Manual; // Set data from FormData object this.Location = (Point)FromString(reader.ReadLine(), typeof(Point)); this.ClientSize = (Size)FromString(reader.ReadLine(), typeof(Size)); this.WindowState = (FormWindowState)FromString(reader.ReadLine(), typeof(FormWindowState)); } } // Don't let missing settings scare the user catch( Exception ex ) { MessageBox.Show(ex.Message, ex.GetType().Name); } } // Convert a string to an object private object FromString(object obj, Type type) { TypeConverter converter = TypeDescriptor.GetConverter(type); return converter.ConvertFromString(obj.ToString()); } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { // Save form settings string fileName = Application.LocalUserAppDataPath + @"\MainForm.txt"; using( StreamWriter writer = new StreamWriter(fileName) ) { // Restore the window state to save location and // client size at restored state FormWindowState state = this.WindowState; this.WindowState = FormWindowState.Normal; writer.WriteLine(this.ToString(this.Location)); writer.WriteLine(this.ToString(this.ClientSize)); writer.WriteLine(this.ToString(state)); } } // Convert an object to a string private string ToString(object obj) { TypeConverter converter = TypeDescriptor.GetConverter(obj.GetType()); return converter.ConvertToString(obj); } } }