コード例 #1
0
        /// <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";
                }
            }
        }
コード例 #2
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;
            }
        }