Domanda

Sto concatenando una stringa che a volte è abbastanza lunga da non rientrare in un controllo etichetta. Come posso farlo scorrere automaticamente verso il lato dei diritti in modo da vedere sempre la fine della stringa?

È stato utile?

Soluzione

Anche se sono sicuro che ci sono modi per farlo, devo chiedere, perché? Penso che sembrerebbe e / o funzionerebbe molto male e probabilmente confonderebbe l'utente.

Perché non tagliare il testo con un'ellisse (...) alla fine e mostrare un suggerimento sull'etichetta?

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);

Ora la descrizione comandi mostrerà il testo completo quando l'utente ci passa sopra. Poiché il testo nell'etichetta verrà troncato e terminerà con un'ellisse, l'utente dovrebbe sapere di passare il mouse sopra per ulteriori informazioni (di solito in modo standard).

Altri suggerimenti

Il TextAlign ti consente di specificare l'allineamento. Se lo giustifichi a destra con questo, il lato destro del testo sarà sempre visibile. Tuttavia, se vuoi che sia giustificato a sinistra o al centro e che abbia ancora il comportamento che descrivi, sospetto che dovrai eseguire alcune misurazioni utilizzando Graphics.MeasureString per determinare se il testo si adatta e modificare dinamicamente l'allineamento.

AFAIK non c'è modo di scorrere un'etichetta. Un trucco sarebbe usare un TextBox (sola lettura, disattivare il bordo) quindi usare SendKeys.Send () per spostare il cursore alla fine del testo. Qualcosa del tipo:

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

Per non mostrare il testo come selezionato, ho dovuto cambiare la sua posizione nell'ordine di tabulazione (in modo che non fosse 1) ma ciò potrebbe non essere un problema nel tuo caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top