none
Formatar label com espaços RRS feed

  • Pergunta

  • Olá...

    Esto com uma dúvida... tenho uma label em um form windows... quero formatar ela da seguinte maneira:
    O inicio alinhado a esquerda e o fim alinhado a direita.... exemplo:

    Texto Texto ..................... R$ 1,00
    Texto................................ R$ 2,00

    Já tentei de varias formas.. mas não consegui fazer o espaço entre o texto o preço se acertarem...

    valeu...


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php

    quarta-feira, 15 de janeiro de 2014 17:36

Respostas

  • Boa tarde,

    O código abaixo deve resolver, mas você precisa mudar a fonte do label para Courier New

    private void FormatarLabel()
    {
        StringBuilder sbTextoLabel = new StringBuilder();
        sbTextoLabel.Append(FormatarTextoValores("Valor Prod 1", '.', "R$ 1,00", 100));
        sbTextoLabel.Append("\n");
        sbTextoLabel.Append(FormatarTextoValores("Valor Prod 200", '.', "R$ 10,00", 100));
        sbTextoLabel.Append("\n");
        label1.Text = sbTextoLabel.ToString(); // O Labe deve ter a fonte do tipo Courier New
    }
    private static string FormatarTextoValores(string strTextoInicio, char chLimite, string strTextoFim, int intTamanhoLinha)
    {
        string strSaida = "";
        strSaida = strSaida.PadRight(intTamanhoLinha, chLimite);
        strSaida = strSaida.Remove(0, strTextoInicio.Length);
        strSaida = strSaida.Insert(0, strTextoInicio);
        strSaida = strSaida.Remove(strSaida.Length - strTextoFim.Length, strTextoFim.Length);
        strSaida = strSaida.Insert(strSaida.Length, strTextoFim);
        return strSaida;
    }

    • Marcado como Resposta Joao Batista quarta-feira, 15 de janeiro de 2014 19:10
    quarta-feira, 15 de janeiro de 2014 19:04

Todas as Respostas

  • Colocar 2 labels não resolveria?

    quarta-feira, 15 de janeiro de 2014 18:22
  • Até pensei nisso... mas vi a opção de formatar a string com espaços, mas não deu muito certo, fica desalinhado ainda... (deu certo com Sapce(qtd de espaços) em outro lugar que precisa) o jeito vai ser coloca dois labels para cada linha mesmo.. ainda bem que são 3 linhas...rs.


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php

    quarta-feira, 15 de janeiro de 2014 18:28
  • João, já tentou usar PadLeft ou PadRight?

    Essa função completa a sua string com os caracteres que vc definir. 

    Ex:

    //completa a String "Texto" com pontos até chegar a 10 posições - Texto.....
    "Texto".PadRight(10,'.');
    
    //completa a String "12345" com zeros até chegar a 20 posições - 12345000000000000000
    "12345".PadRight(20,'0');

    Acho que isso pode te ajudar.

    Um abraço.


    quarta-feira, 15 de janeiro de 2014 18:30
  • Usei sim.. em alguns casos deu certo... e tambem o Space... mas quando o tamanho da letra é grande algumas linhas ficam desalinhas...

    mas em todo caso valeu pessoal.


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php

    quarta-feira, 15 de janeiro de 2014 19:01
  • Boa tarde,

    O código abaixo deve resolver, mas você precisa mudar a fonte do label para Courier New

    private void FormatarLabel()
    {
        StringBuilder sbTextoLabel = new StringBuilder();
        sbTextoLabel.Append(FormatarTextoValores("Valor Prod 1", '.', "R$ 1,00", 100));
        sbTextoLabel.Append("\n");
        sbTextoLabel.Append(FormatarTextoValores("Valor Prod 200", '.', "R$ 10,00", 100));
        sbTextoLabel.Append("\n");
        label1.Text = sbTextoLabel.ToString(); // O Labe deve ter a fonte do tipo Courier New
    }
    private static string FormatarTextoValores(string strTextoInicio, char chLimite, string strTextoFim, int intTamanhoLinha)
    {
        string strSaida = "";
        strSaida = strSaida.PadRight(intTamanhoLinha, chLimite);
        strSaida = strSaida.Remove(0, strTextoInicio.Length);
        strSaida = strSaida.Insert(0, strTextoInicio);
        strSaida = strSaida.Remove(strSaida.Length - strTextoFim.Length, strTextoFim.Length);
        strSaida = strSaida.Insert(strSaida.Length, strTextoFim);
        return strSaida;
    }

    • Marcado como Resposta Joao Batista quarta-feira, 15 de janeiro de 2014 19:10
    quarta-feira, 15 de janeiro de 2014 19:04
  • Legal.. valeu... obrigado.

    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php

    quarta-feira, 15 de janeiro de 2014 19:10