Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] A label não quer aparecer durante a execução da aplicação

A label não quer aparecer não sei o porque, só uma observação a Label está com o nome Lbl_senha, pois o nome Lbl_Resultado já está sendo usado pois eu confundi e coloquei este nome em outro formulário. Segue a imagem do formulário e o código abaixo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms;

namespace CursoWindowsForms { public partial class Frm_ValidaSenha : Form { public Frm_ValidaSenha() { InitializeComponent();

    }

    private void Btn_Reset_Click(object sender, EventArgs e)
    {
        Txt_Senha.Text = "";
        Lbl_senha.Text = "";
    }

    private void Txt_Senha_KeyDown(object sender, KeyEventArgs e)
    {
        ChecaForcaSenha verifica = new ChecaForcaSenha();
        ChecaForcaSenha.ForcaDaSenha forca;
        forca =  verifica.GetForcaDaSenha(Txt_Senha.Text);
        Lbl_senha.ToString();
    }

    private void Frm_ValidaSenha_Load(object sender, EventArgs e)
    {

    }

    private void Txt_Senha_TextChanged(object sender, EventArgs e)
    {

    }
}
public class ChecaForcaSenha
{

    public enum ForcaDaSenha
    {
        Inaceitavel,
        Fraca,
        Aceitavel,
        Forte,
        Segura
    }

    public int geraPontosSenha(string senha)
    {
        if (senha == null) return 0;
        int pontosPorTamanho = GetPontoPorTamanho(senha);
        int pontosPorMinusculas = GetPontoPorMinusculas(senha);
        int pontosPorMaiusculas = GetPontoPorMaiusculas(senha);
        int pontosPorDigitos = GetPontoPorDigitos(senha);
        int pontosPorSimbolos = GetPontoPorSimbolos(senha);
        int pontosPorRepeticao = GetPontoPorRepeticao(senha);
        return pontosPorTamanho + pontosPorMinusculas + pontosPorMaiusculas + pontosPorDigitos + pontosPorSimbolos - pontosPorRepeticao;
    }

    private int GetPontoPorTamanho(string senha)
    {
        return Math.Min(10, senha.Length) * 7;
    }

    private int GetPontoPorMinusculas(string senha)
    {
        int rawplacar = senha.Length - Regex.Replace(senha, "[a-z]", "").Length;
        return Math.Min(2, rawplacar) * 5;
    }

    private int GetPontoPorMaiusculas(string senha)
    {
        int rawplacar = senha.Length - Regex.Replace(senha, "[A-Z]", "").Length;
        return Math.Min(2, rawplacar) * 5;
    }

    private int GetPontoPorDigitos(string senha)
    {
        int rawplacar = senha.Length - Regex.Replace(senha, "[0-9]", "").Length;
        return Math.Min(2, rawplacar) * 6;
    }

    private int GetPontoPorSimbolos(string senha)
    {
        int rawplacar = Regex.Replace(senha, "[a-zA-Z0-9]", "").Length;
        return Math.Min(2, rawplacar) * 5;
    }

    private int GetPontoPorRepeticao(string senha)
    {
        System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"(\w)*.*\1");
        bool repete = regex.IsMatch(senha);
        if (repete)
        {
            return 30;
        }
        else
        {
            return 0;
        }
    }


    public ForcaDaSenha GetForcaDaSenha(string senha)
    {
        int placar = geraPontosSenha(senha);

        if (placar < 50)
            return ForcaDaSenha.Inaceitavel;
        else if (placar < 60)
            return ForcaDaSenha.Fraca;
        else if (placar < 80)
            return ForcaDaSenha.Aceitavel;
        else if (placar < 100)
            return ForcaDaSenha.Forte;
        else
            return ForcaDaSenha.Segura;
    }
}

}

2 respostas
solução!

Olá, Gustavo! Tudo bem?

Com base na sua descrição, parece que a Label não está aparecendo porque você não está atualizando o texto dela corretamente no método Txt_Senha_KeyDown. No trecho de código que você forneceu, você está chamando Lbl_senha.ToString();, o que não altera o texto da Label.

Aqui está uma sugestão de como corrigir isso:

  1. No método Txt_Senha_KeyDown, após calcular a força da senha, atribua o resultado ao texto da Label:
private void Txt_Senha_KeyDown(object sender, KeyEventArgs e)
{
    ChecaForcaSenha verifica = new ChecaForcaSenha();
    ChecaForcaSenha.ForcaDaSenha forca;
    forca = verifica.GetForcaDaSenha(Txt_Senha.Text);
    Lbl_senha.Text = forca.ToString(); // Atualiza o texto da Label
}
  1. Certifique-se de que a Label está visível e posicionada corretamente no formulário. No designer do Visual Studio, verifique se as propriedades Visible e Location da Label estão configuradas corretamente.

  2. Caso a Label ainda não apareça, tente definir um texto inicial para ela no método Frm_ValidaSenha_Load para garantir que ela está sendo exibida corretamente:

private void Frm_ValidaSenha_Load(object sender, EventArgs e)
{
    Lbl_senha.Text = "Digite uma senha para verificar a força.";
}

Com essas alterações, a Label deve aparecer e ser atualizada conforme esperado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Consegui resolver, muito obrigado!