#c_sharp #wpf
Здрастувуйте! Как сделать чтобы при выборе CheckBox пароль скрывался и наоборот, все никак не могу понять.
Ответы
Ответ 1
Как вам уже сказали, такой функциональности нет у PasswordBox. Но я предложу решение-костыль, которое как-то реализовал. У нас есть TextBox, PasswordBox, CheckBox и Button.TextBox - тут будет виден пароль PasswordBox - тут будет скрыт пароль CheckBox - переключатель видимости пароля Button - кнопка для отображения пароля в окне Главное условие - это расположение TextBox и PasswordBox в одном и том же месте с одними и теми же координатами. Просто установить одинаковые значения. TextBox изначально убдет скрыт. Обработчик клика на CheckBox будет таким: private void CheckBox_Click(object sender, RoutedEventArgs e) { var checkBox = sender as CheckBox; if (checkBox.IsChecked.Value) { pwdTextBox.Text = pwdPasswordBox.Password; // скопируем в TextBox из PasswordBox pwdTextBox.Visibility = Visibility.Visible; // TextBox - отобразить pwdPasswordBox.Visibility = Visibility.Hidden; // PasswordBox - скрыть } else { pwdPasswordBox.Password = pwdTextBox.Text; // скопируем в PasswordBox из TextBox pwdTextBox.Visibility = Visibility.Hidden; // TextBox - скрыть pwdPasswordBox.Visibility = Visibility.Visible; // PasswordBox - отобразить } } Ну а по нажатию на кнопку отобразим наш пароль, это для наглядности: private void Button_Click_1(object sender, RoutedEventArgs e) { var passrod = checkBoxPwd.IsChecked.Value ? pwdTextBox.Text : pwdPasswordBox.Password; MessageBox.Show(passrod); } Данный пример польносью рабочий. Да, костыль, но это самое простое решение. Ссылка на очень похожий ответ с большого SO: showing password characters on some event for passwordbox можно еще Focus добавить, как сделано там. Ответ 2
Как отмечено выше, хоть непосредственно такого функционала у PasswordBox нет, (!)но возможно реализовать несколько костыльное решение через собственную всплывающую подсказку самого PasswordBox'а, которая есть объект (а не только лишь строчка) -- создадим System.Windows.Controls.ToolTip, настроим его и по установке/сбросу галочки в CheckBox'е будем заполнять/очищать подсказку PasswordBox'у, например так: private void checkBox_Click(object sender, RoutedEventArgs e)//на установку/снятие галочки { if (checkBox.IsChecked == true) { ToolTip tooltip = new ToolTip(); tooltip.BorderBrush = null;//нет границы tooltip.HasDropShadow = false;//не отбрасывать тень tooltip.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;//поверх элемента tooltip.StaysOpen = true;//оставаться открытым tooltip.Content = passwordBox.Password;//собственно текст подсказки = незамаскированный пароль passwordBox.ToolTip = tooltip;//установка } else { passwordBox.ToolTip = null;//сброс }; } конечно, над оформление ещё стоит поработать :) и лучше такой спец. ToolTip создавать единственный раз вместе с окном пароля.
Комментариев нет:
Отправить комментарий