Как сделать систему Load and Save Desktop layout?
Возможно это глупый вопрос, но я так и не понял как сделать систему Load and Save Desktop layout. У меня на форме стоят 2 панели , их можно передвигать и менять размер. Но мне нужно сделать систему которая позволит сохранять их размер, позицию и Dock. А так же загружать это всё. Надеюсь это возможно) Заранее Благодарю!
Ответы (1 шт):
Автор решения: Blackmeser
→ Ссылка
Самый простецкий путь:
//Сохранение:
int panel1width = panel1.Width;
int panel1height = panel1.Height;
int panel1locationx = panel1.Location.X;
int panel1locationy = panel1.Location.Y;
int panel1dock = (int)panel1.Dock
//для panel2 так-же
List<string> list = new List<string>();
list.Add("panel1width="+panel1width);
list.Add("panel1height="+panel1height);
list.Add("panel1locationx="+panel1locationx);
list.Add("panel1locationy="+panel1locationy);
list.Add("panel1dock="+panel1dock);
File.WriteAllLines("save.ini", list.ToArray());
//Загрузка:
string[] paramtrs = File.ReadAllLines("save.ini");
for (int i = 0; i < paramtrs.Length; i++)
{
string s = paramtrs[i];
int pos_delimetr = s.IndexOf('=');
string before_delimetr = s.Substring(0, pos_delimetr);
string after_delimetr = s.Substring(pos_delimetr + 1);
if (before_delimetr == "panel1width") panel1width = Convert.ToInt32(after_delimetr);
if (before_delimetr == "panel1height") panel1height = Convert.ToInt32(after_delimetr);
if (before_delimetr == "panel1locationx") panel1locationx = Convert.ToInt32(after_delimetr);
if (before_delimetr == "panel1locationy") panel1locationy = Convert.ToInt32(after_delimetr);
if (before_delimetr == "panel1dock") panel1dock = Convert.ToInt32(after_delimetr);
}
panel1.Location = new Point(panel1locationx, panel1locationy);
panel1.Size = new Size(panel1width, panel1height);
panel1.Dock = (DockStyle)panel1dock;
//для panel2 так-же
Сохранение поместить в событие Form_Closing.
Загрузку в событие Form_Load.
Такой подход как работал 16 лет назад (с появления Framework 2.0) так и работает до сих пор. (насчёт приведения DockStyle не уверен)