Password char в windows form. С#

264
29 мая 2017, 22:48

Не понимаю как правильно сделать чекбокс на показ пароля если отмечен. Есть вот такой код

 private void cbShowPass_CheckedChanged(object sender, EventArgs e)
    {
       if (cbShowPass.Checked)
        {
            tbPass.UseSystemPasswordChar = false;
        } else
        {
            tbPass.UseSystemPasswordChar = true;
        }
    }

Именно этот код ведет себя странно. Суть такая, форма стартует я вввожу пароль и он показывается не скрытым, ставлю чекбокс он не скрытый. Очищаю поле, опять ввожу пароль, в этот раз он уже скрыт, по клику на чекбокс он показывается. В чем моя ошибка? И как сделать свои значки скрытого пароля? В свойствах текстбокса я поставил "*" такой символ. Если отрабатывать код выше, то там точки скрывают пароль.

Answer 1

Обновление 2 UseSystemPasswordChar - использовать системный символ пароля. В случае если вам нужно свой, достаточно кода(изменил код оригинального ответа)

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.PasswordChar = checkBox1.Checked ? '*' : '\0';
    }

Обновление 1

У Вас всё корректно работает. Изначально режим пароля отключён. if(checkbox.Checked) - если чекбокс "чекнут", то UseSystemPasswordChar = false, т.е. отключить. Он итак был отключён, далее, при снятии галочки, свойство Checked становится false и в этом случае Вы ставите UseSystemPassword = true.

Оригинальный ответ

Скорее всего что-то не то с начальными настройками, сделайте следующее для проверки:

  1. Добавьте пустую форму для тестирования, на ней
  2. Добавьте новый чекбокс на форму
  3. Добавьте новый тексбокс на форму
  4. Дважды кликните по чекбоксу и добавьте такой код, переименовав контролы под свои имена

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.UseSystemPasswordChar = checkBox1.Checked;
    }
    
  5. Запустите созданную форму.

  6. Введите что-либо в текстбокс
  7. Поставьте галочку на чекбокс
  8. Снимите галочку

У меня всё работает. Если у вас не заработает обновите версию .netframework (можно просто поставить последнюю visual studio). Если работает, значит что-то ещё в Вашем проекте влияет на вывод в текстбокс.

Приведённые действия корректно работают. Windows 10, Visual Studio 2017(ставил неделю назад)

READ ALSO
Написать код на C# для такого задания [требует правки]

Написать код на C# для такого задания [требует правки]

Назначение Программа реализует автоматный распознаватель, использующий в качестве структуры данных таблицу переходов

256
Как получить иконку папки?

Как получить иконку папки?

Как получить иконку папки?

299
wpf создать массив user control и поместить GroupBox

wpf создать массив user control и поместить GroupBox

Привет народ, создал User control с помощью конструктора, теперь мне нужно программно создать массив этих элементов и поместить их в Groupbox или какой...

481
Рассылка сообщений

Рассылка сообщений

Требуется рассылка сообщений с сервера клиентамВ среднем 300 раз в секунду, но в пике до 25000 (на несколько секунд)

283