Qualunque sia lo scopo è.
Se la dimensione della casella di testo deve essere impostata dinamicamente in base alla stringa, che dovrebbe essere il testo all'interno di questa casella, non è disponibile l'opzione.
Motivi: MeasureString utilizza i normali formati di stringa come delimitatori per la propria larghezza e altezza. Vengono analizzati anche i mezzi, il ritorno a capo e l'avanzamento riga. Risultante in una taglia. Larghezza e dimensioni. Altezza.
A seconda della stringa (e del relativo carattere e numero di righe) queste due variabili possono contenere valori, che a volte sono inutili da utilizzare come valori di larghezza/altezza di una casella di testo (perché possono essere più grandi dei valori della scheda madre e questo ridimensionerebbe la casella di testo in una dimensione, con i bordi sinistro e inferiore oltre quelli del modello principale).
Alcune soluzioni sono ancora disponibili, a seconda dell'obiettivo che si vorrebbe raggiungere.
Un'idea potrebbe essere: Creare una casella di testo nella finestra di progettazione, dimensione = 100 X 100. abilitare il wrapping delle parole.
Nel OnTextChanged gestore di eventi della casella di testo, abbiamo appena ridimensionare la larghezza della casella di testo per un valore, definito da noi stessi (per esempio parentform.Width o un altro valore duro).
questo potrebbe causare il ritorno a capo automatico per ricalcolare la stringa nella casella di testo e questo sarebbe riorganizzare tutti i personaggi all'interno della casella di testo, in quanto a capo automatico è abilitato.
L'altezza della casella di testo potrebbe essere impostata su parentform.Height, ad esempio.
MA, meglio: impostare l'altezza dinamicamente, in base al valore Y del ReturnValue (punto) del metodo texbox.GetPositionFromCharIndex (textbox.TextLength -1). Quindi, con Math.Min() determinare, che è più piccolo (o parentform.Height o Point.Y) e reimpostare la dimensione della casella di testo su nuova dimensione (precedenteDeterminedWidth, nowDeterminedHeight).
Si prega di tenere presente (se le barre di scorrimento sono abilitate) per aggiungere circa 17 pixel al calcolo della larghezza.
migliori saluti
Stai usando .NET 1? –
stai provando questo in silverlight? –