Inserire "..." alla fine di una label se testo troppo lungo

venerdì 18 febbraio 2011 - 09.21
Tag Elenco Tags  C#  |  .NET 3.5  |  Visual Studio Express  |  Javascript  |  CSS 2.1  |  CSS 3.0  |  HTML 4.01  |  XHTML 1.0  |  XHTML 1.1  |  XHTML 2.0

andrestu Profilo | Expert

ho una label di dimensione fissa in cui valorizzo dinamicamente la proprietà text, quindi posso avere diversi risultati in termini di quantità di caratteri.
Vorrei far aggiungere automaticamente tre puntini alla fine del testo se il testo è troppo lungo, come posso fare???

esempio:
testo esempio...


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

alx_81 Profilo | Guru

>ho una label di dimensione fissa in cui valorizzo dinamicamente
>la proprietà text, quindi posso avere diversi risultati in termini
>di quantità di caratteri.
>Vorrei far aggiungere automaticamente tre puntini alla fine del
>testo se il testo è troppo lungo, come posso fare???
Ciao,
siccome immagino che userai un carattere in cui ogni lettera non occupa lo stesso spazio, avrai però una size massima da raggiungere in pixel?
Se sì, puoi controllare a quanto arrivi quando componi la stringa, e, se superi quella size, puoi semplicemente concatenare il testo "..." cancellando fino a che la size non rientra entro i valori ammessi, che ne dici?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

be certo, ho una size massima, ma come faccio a realizzare il tutto in pratica???


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

alx_81 Profilo | Guru

>be certo, ho una size massima, ma come faccio a realizzare il
>tutto in pratica???
questo è un codice di esempio per fare quello che ti dicevo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

alx_81 Profilo | Guru

>be certo, ho una size massima, ma come faccio a realizzare il
>tutto in pratica???
sai che forse te la cavi con questa proprietà direttamente da designer?
http://msdn.microsoft.com/it-it/library/system.windows.forms.label.autoellipsis(v=VS.80).aspx
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

Grazie per le risposte ma purtroppo per quel che riguarda il codice che mi hai linkato credo che non funzioni, il punto è che il testo può sforare di n caratteri quindi anche se cambio gli ultimi tre e per esempio il testo sfora di 10 caratteri non vedrò mai i tre punti. Per quanto riguarda la seconda soluzione purtroppo io utilizzo Aspnet quindi niente. Al momento ho risolto con un piccolo trucchetto che funziona solo nel caso in cui utilizzo una label multiriga, il problema rimane per le label su una unica riga, credo che bisogna utilizzare Javascript e agire direttametne a livello client...



Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

alx_81 Profilo | Guru

>Grazie per le risposte ma purtroppo per quel che riguarda il
>codice che mi hai linkato credo che non funzioni, il punto è
>che il testo può sforare di n caratteri quindi anche se cambio
>gli ultimi tre e per esempio il testo sfora di 10 caratteri non
>vedrò mai i tre punti. Per quanto riguarda la seconda soluzione
>purtroppo io utilizzo Aspnet quindi niente. Al momento ho risolto
>con un piccolo trucchetto che funziona solo nel caso in cui utilizzo
>una label multiriga, il problema rimane per le label su una unica
>riga, credo che bisogna utilizzare Javascript e agire direttametne
>a livello client...
In effetti se si fosse trattato di windows forms il codice avrebbe funzionato, perchè guardavo la size.. che però su web non hai come facile gestione.
Adesso che mi hai dato una svegliata e mi hai fatto capire che si tratta di web (perdonami) ti chiedo, vorresti avere il riadattamento della label lato server o client? Perchè vediamo di trovare entrambe le soluzioni se serve.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

Ciao Ale,
scusa il ritardo della risposta ma ho avuto molto da fare ultimamente, il problema l'ho temporaneamente risolto per le label multiriga nel senso che da server rieco a sapere con precisione l'altezza della riga e quindi in relazione all'altezza del contenitore fare tutti i conti eliminando l'ultima riga visualizzata e sostituendola con "..."
il problema è un pò più complicato per un riga singola capire ad una determinata posizione x quale numero di carattere corrisponde, farlo da server è praticamente impossibile perchè molto dipende dal browser e da come vengono renderizzati i caratteri quindi per avere assoluta certezza e precisione bisogna operare su client con Javascript o framework derivati.
Se ti capita qualche soluzione o codice fammi sapere grazie...


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

alx_81 Profilo | Guru

>Ciao Ale,
Ciao

>scusa il ritardo della risposta
eheheh, hai domandato tu l'attesa è deleteria per te

>Se ti capita qualche soluzione o codice fammi sapere grazie...
in questi casi consiglio sempre di farsi supportare da framework javascript. Io uso jQuery, che mi facilità molto la gestione.
Se non lo conosci vai qui: http://jquery.com
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5