Ventana de verificación para focus-Password Generator C #

Para mi proyecto de fin de año, estoy creando un generador de contraseñas donde usted genera una contraseña, luego puede elegir si desea almacenarla o no en una base de datos compacta local (.sdf). Estoy trabajando en la GUI en este momento. Estoy creando una barra de fuerza para las contraseñas, pero el problema es que parece que no puedo hacer que actualice la barra de fuerza sin mover primero el control deslizante. Déjame mostrarte un ejemplo de lo que estoy hablando. Me preguntaba si podría hacer esto con código o con eventos de acción. Dime que piensas. A continuación se muestra un código para el diseñador de GUI. ¿Crees que es una buena idea o habría una forma mejor? La idea de enfoque surgió de si la ventana tiene enfoque, seguiría revisando las opciones y vería si algo ha cambiado. Video: http://youtu.be/ihSeKbsL55M

namespace PasswordGenerator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void fileToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void quitToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void bcopy_Click(object sender, EventArgs e)
        {
            if (passwordGenBox.Text.Length != 0)
            {
                Clipboard.SetText(passwordGenBox.Text);
            }
            else
            {
                MessageBox.Show("No Password Generated.", "Copy Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bclear_Click(object sender, EventArgs e)
        {
            passwordGenBox.Text = "";
        }

        private void lengthSlider_Scroll(object sender, EventArgs e)
        {
            sliderLength.Text = lengthSlider.Value.ToString();
            int str = lengthSlider.Value;
            bool scheck = symCheck.Checked;
            bool ncheck = numbersCheck.Checked;
            //1-10 no symbols or numbers
            if (str > 0 && str <= 10)
            {
                strLabel.Text = "Week";
            }
            //1-10 symbols no numbers
            if (str > 0 && str <= 10 && scheck == true && ncheck == false)
            {
                strLabel.Text = "Alright";
            }
            //1-10 no symbols but numbers
            if (str > 0 && str <= 10 && scheck == false && ncheck == true)
            {
                strLabel.Text = "Week";
            }
            //1-10 symbols & numbers
            if (str > 0 && str <= 10 && scheck == true && ncheck == true)
            {
                strLabel.Text = "Okay";
            }
        }

        private void bgen_Click(object sender, EventArgs e)
        {
            int pwlength = lengthSlider.Value;
            bool symbols = false;
            bool numbers = false;
            if (symCheck.Checked && numbersCheck.Checked)
            {
                symbols = true;
                numbers = true;
            }
            else if (symCheck.Checked && numbersCheck.Checked == false)
            {
                symbols = true;
                numbers = false;
            }
            else if (symCheck.Checked == false && numbersCheck.Checked)
            {
                symbols = false;
                numbers = true;
            }
            else
            {
                symbols = false;
                numbers = false;
            }
            Generator gen = new Generator(pwlength, symbols, numbers);
        }
    }
}

preguntado el 16 de mayo de 11 a las 18:05

¿Puede aclarar lo que realmente está preguntando? Dijiste "pero el problema es que parece que no puedo hacer que actualice la barra de fuerza sin antes mover el control deslizante". Pero dado que su código para actualizar la fuerza está dentro del evento de desplazamiento del control deslizante, parece tener sentido que sea entonces cuando se actualice. ?? -

Daniel realmente respondió exactamente lo que estaba buscando. Debería simplemente ponerlos en diferentes funciones. -

1 Respuestas

Bueno, es bastante difícil entender lo que realmente estás preguntando aquí, pero la razón por la que tu ProgressBar no se actualiza es que no le estás diciendo que se actualice a menos que muevas el control deslizante.

Observe cómo tiene toda su lógica para saber si la contraseña es "correcta, débil o correcta" en el evento Slide de su componente "lengthSlider". Sin embargo, en ninguna parte de ese código establece el valor de ProgressBar, que parece estar hecho en el evento "bgen_Click", que supongo que es el botón generar contraseña.

Para actualizar la GUI cuando opera los controles individuales, debe llamar al código apropiado. Le sugiero que ponga toda su lógica en funciones significativas y las llame según sea necesario.

Personalmente, tendría algo parecido a esto:

  • GetPasswordStrengthString (); - compruebe la casilla de verificación de símbolos y números marcada y la longitud para devolver una cadena adecuada para la etiqueta "strLabel".

  • CalculateStrengthBarLength (); - toda su lógica para determinar la longitud de ProgressBar

A continuación, se llamarán donde desee que surtan efecto. Por ejemplo, en el evento CheckedChanged de las casillas de verificación de símbolos y números, cuando eso cambia, desea verlo reflejado en ProgressBar.

contestado el 16 de mayo de 11 a las 23:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.