C # tem final de prioridades de texto
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?
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.