Etichetta crescere da destra a sinistra

Ho un’etichetta sul mio modulo che si trova sulla destra del modulo. Questa etichetta carica un testo dinamico.

A volte il testo che carica è troppo lungo e il testo attraversa il bordo del modulo, cioè parte del testo è fuori forma.

Voglio far crescere l’etichetta da destra a sinistra anziché da sinistra a destra. Come ottengo questo?

Ho risolto questo impostando l’etichetta

AutoSize proprietà su false ,

TextAlign to MiddleRight ,

un’ancora a destra .

Si noti che la dimensione dell’etichetta stessa non cresce con il testo, ma è ansible gestirla assegnando una larghezza sufficiente per adattarla al contenuto. L’effetto visivo è lo stesso.

Il mio problema qui era che la mia etichetta era in un pannello e qualsiasi cosa facessi non funzionava.

Quello che ho fatto è stato posizionare l’etichetta in un controllo TableLayoutPanel e impostare la proprietà RightToLeft di TableLayoutPanel su True ; questo ha fatto il trucco

Non puoi farlo “crescere da destra a sinistra”, ma puoi assegnare la sua proprietà Left in modo che non esca dal modulo:

 label1.Text = "some dynamic text here..."; if (label1.Right > this.Width) label1.Left = this.Width - label1.Width; 

Se il design lo consente, puoi anche raddoppiarne l’altezza in modo che il testo si estenda su due righe.

È ansible utilizzare TableLayoutPanel o un altro controllo contenitore compatibile, ma impostare invece la proprietà RightToLeft per il set di contenitori Dock = “Right” per l’etichetta

L’impostazione della proprietà RightToLeft non sempre fornisce i risultati previsti, poiché per alcuni formati di stringhe la stringa viene modificata cambiando l’ordine delle parole.

puoi scriverlo:

  public enum Leftorright { left,right} private Leftorright _LeftToRight = Leftorright.left; public Leftorright LeftToRight { get { return _LeftToRight; } set { _LeftToRight = value; } } protected override void OnTextChanged(EventArgs e) { int oldWidth; oldWidth = this.Width; base.OnTextChanged(e); if (LeftToRight == Leftorright.right && this.Width != oldWidth) { this.Left = this.Left - this.Width + oldWidth; } }