Текстовое поле заполнителя C # + UseSystemPasswordChar - PullRequest
0 голосов
/ 08 марта 2019

Я использую Visual Studio 2015 и ищу советы для своей идеи.Итак, у меня есть текстовое поле с заполнителем текста «Пароль», и когда я сосредоточился на нем, его изменение переднего цвета и начало использования UseSystemPasswordChar = true.У меня есть класс для текста заполнителя:

class PlaceHolderTextBox
{
    public void SetPlaceHolder(Control control, string PlaceHolderText)
    {
        control.Text = PlaceHolderText;
        control.GotFocus += delegate (object sender, EventArgs args) {
            if (control.Text == PlaceHolderText)
            {
                control.Text = "";
                control.ForeColor = Color.Black;
            }

        };
        control.LostFocus += delegate (object sender, EventArgs args) {
            if (control.Text.Length == 0)
            {
                control.Text = PlaceHolderText;
                control.ForeColor = SystemColors.InactiveCaption;
            }

        };
    }
}

И мне нужен флажок «Показать пароль», который позволяет, если проверено, показать пароль.Итак, вот мой логин:

private void Login_Load(object sender, EventArgs e)
    {
        PlaceHolderTextBox tb = new PlaceHolderTextBox();
        tb.SetPlaceHolder(TbUsername, "Username");
        tb.SetPlaceHolder(TbPassword, "Password");
    }

    private void LlSignUp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        SignUp reg = new SignUp();
        reg.Show();
    }

    private void LlClose_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        Application.Exit();
    }

    private void BtLogin_Click(object sender, EventArgs e)
    {
        this.Hide();
        Main main = new Main();
        main.Show();
    }

    private void CbShowPassword_CheckedChanged(object sender, EventArgs e)
    {
        if (CbShowPassword.Checked)
            TbPassword.UseSystemPasswordChar = false;
        else
            TbPassword.UseSystemPasswordChar = true;

    }

    private void TbPassword_Enter(object sender, EventArgs e)
    {
        TbPassword.UseSystemPasswordChar = true;
    }

    private void TbPassword_Leave(object sender, EventArgs e)
    {
        TbPassword.UseSystemPasswordChar = false;
    }

Проблема в том, что я не могу использовать эти два решения вместе и не знаю, как их решить

...