È possibile evidenziare/selezionare parte del testo in un controllo etichetta Windows Form? So che è possibile con il controllo RTFtextbox ma che l'utilizzo di tale controllo sarebbe eccessivo dato che ho bisogno di creare molte istanze dell'etichetta.È possibile selezionare il testo su un'etichetta di modulo Windows?
risposta
È possibile selezionare il testo su un'etichetta di modulo Windows? - NO (Almeno nessun modo semplice, senza sovrascrivere il metodo Label.Paint)
È possibile modificare facilmente un TextBox per questo scopo.
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
Non crederci? ecco un esempio per te.
Il problema che potresti incontrare è se stai impostando il testo della texbox in modo dinamico, il quale nasconderà il testo se è più largo della casella di testo, a differenza dell'etichetta. –
@TheMuffinMan devi impostare la proprietà «WordWrap» su «true». –
Se necessario, è anche possibile impostare Multiline = True per poter modificare l'altezza del TextBox. –
No, non è possibile selezionare il testo sull'etichetta di Windows Form. Puoi invece usare una casella di testo di sola lettura per questo.
Utilizzare un TextBox
con BorderStyle
set per None
e Readonly
insieme a true
e Backcolor a corrispondere a quello del contenitore.
Non è possibile evidenziare parte del testo su un'etichetta. Tuttavia, è possibile utilizzare un'immagine e impostarla sulla proprietà Label.Image se il testo di queste etichette è statico.
sarà davvero difficile da implementare, inoltre il testo è dinamico - ecco perché è necessario evidenziarne alcuni. – tunafish24
Come Bala R rispose:
"Utilizzare un TextBox con BorderStyle impostata su None e sola lettura impostata su true e Backcolor a corrispondere a quello del contenitore.".
Se la stringa di testo è molto lungo, e il Width
del TextBox
non è sufficiente per visualizzare tutto il testo, quindi è possibile impostare la proprietà Width
del TextBox
per visualizzare tutti è Testo.
Se è necessario conoscere il numero corretto per Width
, è possibile utilizzare il metodo MeasureString
di Graphics
per questo. È possibile ottenere l'istanza dal metodo CreateGraphics()
dello Control
(TextBox
in questo caso).
Il primo parametro è TextBox Text e il secondo parametro è Font di TextBox. Questa funzione restituisce la struttura SizeF
. È necessaria solo la proprietà Width di esso, convertirlo in numero intero con (int)size.Width
o (int)Math.Round(size.Width)
.
Non dimenticare di chiamare il metodo Dispose()
dell'istanza grafica dopo, perché non ne avrai più bisogno.
È possibile scrivere la propria funzione che farà tutto questo processo:
static void SetText(TextBox textBox, string str)
{
Graphics graphics = textBox.CreateGraphics();
SizeF size = graphics.MeasureString(str, textBox.Font);
graphics.Dispose();
textBox.Width = (int)Math.Round(size.Width);
textBox.Text = str;
}
Se si dispone di una casella di testo a larghezza fissa che si desidera ridimensionare con questo codice, vedere questa domanda: https://stackoverflow.com/questions/29299297/measure-text-height-wrapped-in-a- specificato larghezza – QuickDanger
- 1. QMessageBox è possibile selezionare il testo da
- 2. È possibile installare il compilatore su Windows?
- 3. È possibile utilizzare il debugger pudb su Windows?
- 4. Il modulo _imaging C non è installato (su Windows)
- 5. È possibile utilizzare più parametri nell'elemento Etichetta di un modulo: selezionare/modulo: opzione
- 6. È possibile distribuire AppFabric su Windows 7?
- 7. django - modulo di post su selezionare
- 8. È possibile eseguire CoreCLR su Windows XP?
- 9. È possibile emulare ARM su Windows 8?
- 10. È possibile ottenere Rails 4 su Windows?
- 11. Etichette per Django selezionare il campo modulo
- 12. non è possibile installare XDEBUG su Windows?
- 13. modulo mvc di primavera: selezionare il tag
- 14. È possibile ospitare un modulo di Microsoft Access all'interno di un modulo Windows .Net?
- 15. È possibile inviare il contenuto del file di testo su PuTTY su una porta seriale?
- 16. è possibile applicare PCA su qualsiasi classificazione di testo?
- 17. È possibile che la sintesi vocale lavori su Windows Azure?
- 18. UIWebView Impossibile selezionare il testo
- 19. Nessuna possibilità di selezionare il testo all'interno di <input> quando il genitore è trascinabile
- 20. È possibile utilizzare codemirror su più aree di testo?
- 21. È possibile selezionare TextView E contenere collegamenti?
- 22. Non è possibile incollare tutto il testo in WPF testo
- 23. Aprire Windows Explorer e selezionare un file
- 24. selezionare ... dove id = qualsiasi valore. È possibile?
- 25. Webpack: non è possibile risolvere il modulo 'di file-loader'
- 26. Ruby on Rails: selezionare il modulo
- 27. Non è possibile installare PyPdf 2 modulo
- 28. È possibile implementare ping su Windows Phone 7?
- 29. È possibile installare pandoc su Windows utilizzando un comando R?
- 30. È possibile installare IIS 6 su un computer Windows 7?
Cosa si intende per "selezionare"? Vuoi dire selezionarlo per codice, per usare questo testo dopo? – GianT971
scusa @ Giovanni ... per selezione intendo la selezione del testo, ad es. in RichTextBox puoi usare proprietà "SelectedText" ecc per selezionare/evidenziare una porzione dell'intero testo. L'effetto è simile alla selezione/evidenziazione del testo manualmente con il mouse. – tunafish24
Solo un'idea: potresti creare una classe derivata da Label in cui hai alcune proprietà per memorizzare l'indice di inizio e fine del testo da selezionare, quindi sovrascrivere l'evento onPaint puoi evidenziare il testo disegnando un rettangolo semitrasparente su di esso – Marco