Pergunta

Eu estou concatenando uma cadeia que, por vezes, é longo o suficiente para que não se encaixam em um controle rótulo. Como posso fazer isso autoscroll ao rightside então eu sempre ver o fim da string?

Foi útil?

Solução

Enquanto eu estou certo de que há maneiras de fazer, eu tenho que perguntar, por quê? Eu acho que ficaria e / ou trabalho muito mal e provavelmente confundir o usuário.

Por que não ter o texto se aparado com uma elipse (...) no final e mostrar uma dica de ferramenta no rótulo?

using System.Windows.Forms;

var label = new Label();
label.AutoSize = false;
label.AutoEllipsis = true;
label.Text = "This text will be too long to display all together.";

var labelToolTip = new ToolTip();
labelToolTip.SetToolTip(label, label.Text);

Agora, a dica irá mostrar o texto completo quando os usuário passa o cursor sobre ele. Uma vez que o texto no rótulo será truncado e fim em uma elipse, o usuário deve saber a pairar sobre para mais informações (geralmente a forma padrão).

Outras dicas

A propriedade TextAlign permite que você especifique o alinhamento. Se você justificar com o botão direito com isso, o lado direito do texto será sempre visível. No entanto, se você quer que ele seja para a esquerda ou centro justificado e ainda ter o comportamento que você descreve, eu suspeito que você vai precisar para realizar alguma medida usando Graphics.MeasureString para determinar se os ajustes de texto e alterar o alinhamento de forma dinâmica.

AFAIK não há nenhuma maneira para rolar um rótulo. Um hack seria a utilização de uma caixa de texto (somente leitura, desligue fronteira), em seguida, usar SendKeys.Send () para mover o cursor para o final do texto. Algo como:

        textBox1.Focus();
        SendKeys.SendWait("{END}");

Para obter o texto para não mostrar-se como selecionado eu tive que mudá-lo de posição na ordem de tabulação (de modo que não era 1), mas que pode não ser um problema no seu caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top