/// <summary> /// Сохранение в конфиг-файле настроек формы по указанному списку свойств. /// </summary> /// <param name="form">Форма для сохранения ее параметров.</param> /// <param name="options">Набор флагов для сохранения параметров.</param> internal static void SaveFormParams(Form form, ConfigFormOption options) { // Форма не нуль и имя формы непустое. if (form != null && !string.IsNullOrEmpty(form.Name)) { // Ищем корень конфигурации программы. XmlNode root = programParams[trainerRootNodeName]; if (root == null) { // Создаем корень, если его нет. root = programParams.CreateElement(trainerRootNodeName); programParams.AppendChild(root); } // Ищем элемент формы. XmlNode formNode = root[form.Name]; if (formNode == null) { // Создаем его, если его нет. formNode = programParams.CreateElement(form.Name); root.AppendChild(formNode); } // Сохраняем расположение и размер, только если форма не в Максимизированном состоянии. if (form.WindowState == FormWindowState.Normal) { // Если сохраняем размер. if ((options & ConfigFormOption.Size) == ConfigFormOption.Size) { // Элемент ширины. XmlNode formWidth = formNode[xlmNodeNameWidth]; if (formWidth == null) { // Создаем его, если нет. formWidth = programParams.CreateElement(xlmNodeNameWidth); formNode.AppendChild(formWidth); } // Сохраняем ширину. formWidth.InnerText = form.Width.ToString(); // Элемент высоты. XmlNode formHeight = formNode[xlmNodeNameHeight]; if (formHeight == null) { // Создаем его, если нет. formHeight = programParams.CreateElement(xlmNodeNameHeight); formNode.AppendChild(formHeight); } // Сохраняем высоту. formHeight.InnerText = form.Height.ToString(); } // Если сохраняем расположение. if ((options & ConfigFormOption.Location) == ConfigFormOption.Location) { // Элемент горизонтали. XmlNode formLeft = formNode[xlmNodeNameLeft]; if (formLeft == null) { // Создаем его, если нет. formLeft = programParams.CreateElement(xlmNodeNameLeft); formNode.AppendChild(formLeft); } // Сохраняем горизонталь. formLeft.InnerText = form.Left.ToString(); // Элемент вертикали. XmlNode formTop = formNode[xlmNodeNameTop]; if (formTop == null) { // Создаем его, если нет. formTop = programParams.CreateElement(xlmNodeNameTop); formNode.AppendChild(formTop); } // Сохраняем вертикаль. formTop.InnerText = form.Top.ToString(); } } // Если сохраняем состояние окна. if ((options & ConfigFormOption.Maximized) == ConfigFormOption.Maximized) { // Элемент максимизации. XmlNode formMaximized = formNode[ConfigFormOption.Maximized.ToString()]; if (formMaximized == null) { // Создаем его, если нет. formMaximized = programParams.CreateElement(ConfigFormOption.Maximized.ToString()); formNode.AppendChild(formMaximized); } // Сохраняем максимизацию. formMaximized.InnerText = form.WindowState == FormWindowState.Maximized ? "1" : "0"; } } }
/// <summary> /// Загрузка стандартных параметров формы по указанному списку флагов. /// </summary> /// <param name="form">Форма для загрузки параметров.</param> /// <param name="options">Флаги параметров.</param> internal static void LoadFormParams(Form form, ConfigFormOption options) { bool locationExists = false; // Форма не нулевая и с непустым именем. if (form != null && !string.IsNullOrEmpty(form.Name)) { // Ищем конфигурационный корень в файле. XmlNode root = programParams[trainerRootNodeName]; if (root != null) { // Ищем элемент формы. XmlNode formNode = root[form.Name]; if (formNode != null) { // Переменная для конвертирования текста элементов. int value = 0; // Если есть флаг размеров. if ((options & ConfigFormOption.Size) == ConfigFormOption.Size) { // Ширина. XmlNode formWidth = formNode[xlmNodeNameWidth]; if (formWidth != null) { if (int.TryParse(formWidth.InnerText, out value)) { form.Width = value; } } // Высота. XmlNode formHeight = formNode[xlmNodeNameHeight]; if (formHeight != null) { if (int.TryParse(formHeight.InnerText, out value)) { form.Height = value; } } } // Если есть флаг расположения. if ((options & ConfigFormOption.Location) == ConfigFormOption.Location) { bool locationIsNull = true; // Горизонталь. XmlNode formLeft = formNode[xlmNodeNameLeft]; if (formLeft != null) { if (int.TryParse(formLeft.InnerText, out value)) { locationIsNull = false; form.Left = value; } } // Вертикаль. XmlNode formTop = formNode[xlmNodeNameTop]; if (formTop != null) { if (int.TryParse(formTop.InnerText, out value)) { locationIsNull = false; form.Top = value; } } // Если элемент формы есть, но расположение не сохранено, то показываем форму в центре. if (locationIsNull) { form.StartPosition = FormStartPosition.CenterScreen; } else { locationExists = true; form.StartPosition = FormStartPosition.Manual; } } // Если считываем Состояним Максимизации. if ((options & ConfigFormOption.Maximized) == ConfigFormOption.Maximized) { XmlNode formMaximized = formNode[ConfigFormOption.Maximized.ToString()]; // Если элемент есть и его значение "1". if (formMaximized != null && formMaximized.InnerText == "1") { form.WindowState = FormWindowState.Maximized; } else { form.WindowState = FormWindowState.Normal; } } } // Если нет элемента формы и есть считывание расположения, то задаем стандартное положение - в центре. else if ((options & ConfigFormOption.Location) == ConfigFormOption.Location) { form.StartPosition = FormStartPosition.CenterScreen; } } } if (!locationExists) { form.StartPosition = FormStartPosition.CenterScreen; } }