Пример #1
0
        /// <summary>Обработчик события кнопки редактирования сервера</summary>
        private void OnEditServerButtonClick(object Sender, RoutedEventArgs E)
        {
            if (!(cbSmtpSelect.SelectedItem is Server server))
            {
                return;
            }
            var name        = server.Name;
            var address     = server.Address;
            var port        = server.Port;
            var ssl         = server.UseSSL;
            var description = server.Description;
            var login       = server.Login;
            var password    = server.Password;

            if (!ServerEditDialog.ShowDialog("Редактирование сервера",
                                             ref name,
                                             ref address, ref port, ref ssl,
                                             ref description,
                                             ref login, ref password))
            {
                return;
            }
            server.Name               = name;
            server.Address            = address;
            server.Port               = port;
            server.UseSSL             = ssl;
            server.Description        = description;
            server.Login              = login;
            server.Password           = password;
            cbSmtpSelect.ItemsSource  = null;
            cbSmtpSelect.ItemsSource  = TestData.Servers;
            cbSmtpSelect.SelectedItem = server;
        }
Пример #2
0
        /// <summary>
        /// Метод, позволяющий отобразить диалог для редактирования данных
        /// Редактируемые параметры передаются по ссылке
        /// Если пользователь выбрал Ok, то метод возвращает true
        /// Если пользователь выбрал Cancel, то параметры не меняются.
        /// </summary>
        public static bool ShowDialog(
            string Title, ref string Name,
            ref string Address, ref int Port, ref bool UseSSL,
            ref string Description,
            ref string Login, ref string Password)
        {
            var window = new ServerEditDialog
            {
                Title             = Title,
                ServerName        = { Text = Name },
                ServerAddress     = { Text = Address },
                ServerPort        = { Text = Port.ToString() },
                ServerSSL         = { IsChecked = UseSSL },
                Login             = { Text = Login },
                Password          = { Password = Password },
                ServerDescription = { Text = Description },
                Owner             = Application.Current.Windows.Cast <Window>().FirstOrDefault(window => window.IsActive)
            };

            if (window.ShowDialog() != true)
            {
                return(false);
            }

            Name     = window.ServerName.Text;
            Address  = window.ServerAddress.Text;
            Port     = int.Parse(window.ServerPort.Text);
            Login    = window.Login.Text;
            Password = window.Password.Password;

            return(true);
        }
        // Добавляем статические методы для удобства работы с диалогом
        /// <summary>
        /// Метод, позволяющий отобразить диалог для редактирования данных
        /// Редактируемые параметры передаются по ссылке
        /// Если пользователь выбрал Ok, то метод возвращает true
        /// Если пользователь выбрал Cancel, то параметры не меняются.
        /// </summary>
        public static bool ShowDialog(
            string Title, ref string Name,
            ref string Address, ref int Port, ref bool UseSSL,
            ref string Description,
            ref string Login, ref string Password)
        {
            // Создаём окно и инициализируем его свойства
            var window = new ServerEditDialog
            {
                Title = Title,
                // Так можно инициализировать свойства вложенных объектов
                ServerName        = { Text = Name },
                ServerAddress     = { Text = Address },
                ServerPort        = { Text = Port.ToString() },
                ServerSSL         = { IsChecked = UseSSL },
                Login             = { Text = Login },
                Password          = { Password = Password },
                ServerDescription = { Text = Description },
                // Берём класс "Приложение"
                Owner = Application
                        // получаем экземпляр текущего приложения
                        .Current
                        // берём все окна приложения
                        .Windows
                        // пеерводим их из интерфейса IEnumerable в IEnumerable<Window>
                        .Cast <Window>()
                        // находим первое окно, у которого свойство IsActive == true
                        .FirstOrDefault(window => window.IsActive)
            };

            if (window.ShowDialog() != true)
            {
                return(false);
            }
            Name        = window.ServerName.Text;
            Address     = window.ServerAddress.Text;
            Port        = int.Parse((window.ServerPort.Text == "") ? "25" : window.ServerPort.Text);
            Login       = window.Login.Text;
            Password    = window.Password.Password;
            Description = window.ServerDescription.Text;
            return(true);
        }