Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[c#] Ridimensionamento automatico delle etichette in base al contenuto...
mercoledì 13 gennaio 2010 - 15.44
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Pokino
Profilo
| Junior Member
91
messaggi | Data Invio:
mer 13 gen 2010 - 15:44
Salve, ho un problema di questo genere: uso una winform di avviso costituita da una label dove inserisco un messaggio variabile e sotto un hiperlink che mi chiude la finestra di avviso stessa e compie una operazione sulla form chiamante. Vorrei fare in modo che se il messaggio contenesse più righe (con dei newline) fosse visualizzato sempre nella label la quale dovrebbe ovviamente aumentare in altezza e con essa il resto della form.
Ho provato a cercare su msdn trovando solo la proprietà AutoSize che però lavora sulla larghezza. Non si può fare niente per l'altezza?
Grazie
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 13 gen 2010 - 16:30
Ciao.
Puoi risolvere in questo modo:
Inserisci nella form una TextBox com proprietà "Multiline" a true. Dai una dimensione fissa e imposta anche la proprietà "SrollBars" su "Both" o su "Vertical". IN questo modo se il tuo testo eccede le dimensioni della textBox verranno visualizzate le barre di scorrimento.
Ciao
Cristian Barca
Pokino
Profilo
| Junior Member
91
messaggi | Data Invio:
mer 13 gen 2010 - 19:42
grazie, questo modo di procedere l'ho già usato in un'altra form per non arenarmi troppo, tuttavia vorrei proprio trovare una soluzione che non necessiti di una textbox..
tonyexpo
Profilo
| Senior Member
229
messaggi | Data Invio:
gio 14 gen 2010 - 09:56
Ciao
una label di default in WinForms è già autosize=true quindi se fai Label1.Text="Ciao\n\rIo mi chiamo \n\rAntonio!" questo già va a capo automaticamente in in C#, in VB invece, devi scrivere Label1.Text="Ciao" & vbNewLine & "Io mi chiamo...."
Antonio Esposito
MCTS, MCP
http://blogs.dotnethell.it/espositos
Pokino
Profilo
| Junior Member
91
messaggi | Data Invio:
gio 14 gen 2010 - 10:10
vero, anche se il comportamento vale solo con i newline e non se il testo è più lungo dello spazio di una riga, in quel caso si arriva al limite destro della form in malo modo, cmq a me x ora basta andare a capo usando i new line..
il problema è soprattutto questo, forse non mi sono spiegato bene:
poichè sotto alla label ho un hiperlink e la form è dimensionata in design per 1 riga di label e 1 riga di hiperlink, al crescere del numero di righe la label si sovrappone all'hiperlink e poi raggiunge il bottom della form, io vorrei invece che tutta la sezione sottostante la label si mantenesse pulita e la form crescesse di conseguenza in altezza
tonyexpo
Profilo
| Senior Member
229
messaggi | Data Invio:
gio 14 gen 2010 - 11:24
OK adeso ho capito:
ti spiego la soluzione che ho trovato:
fai un form, togli il minimizebutton e il maximizebutton, metti FormBorderStyle=fixedsingle
adesso è uguale ad un msgbox
poi al suo interno ci metti un table layout panel e lo imposti con una sola colonna, e all'interno delle righe (ne devi aggiungere una visto che di default te ne mette 2) aggiungi in alto una label, poi una linklabel o quello che ti server e infine un button. al button imposti anchor = (bottom e right) così si autoallinea all'angolo destro
al layoutpanel imposti l'anchor su (top,bottom,right e left) in pratica fa il resize, e imposti AutoSize=true
poi vai nel codice e crei l'evento TableLayoutPanel_Resize
qui fai me(o this).Height = TableLayoutPanel1.Height + 50
qui fai me(o this).Width = TableLayoutPanel1.Width + 30
così avrai una message box che fa il resize senza accavallare i controlli sia in orizzontale che in verticale
ti consiglio infine di impostare al (o ai) button la proprietà DialogResult, così senza scrivere codice, la pressione di quel pulsante già rappresenterà quel risultato modale, quindi quando chiamerai la form
dim m = new myBox(<argomenti>)
if m.ShowDialog()=DialogResult.OK....
ciao
Antonio Esposito
MCTS, MCP
http://blogs.dotnethell.it/espositos
Pokino
Profilo
| Junior Member
91
messaggi | Data Invio:
gio 14 gen 2010 - 14:24
1237_TestWF_varie.zip
questo discorso del tableLayoutPanel è interessante, non lo conoscevo, però la cosa non mi sembra funzionare..
allego un progetto di test per vedere se sto sbagliando qualcosa, grazie
ps: ho lasciato stare il discorso dialog e pulanti perchè non mi è necessario
tonyexpo
Profilo
| Senior Member
229
messaggi | Data Invio:
gio 14 gen 2010 - 14:52
ad occhio (visto che ho solo il notepad su questa macchina) credo tu non abbia impostato il size automatico sulle righe.. fai click destro sul controllo e poi EditRowsAndColumn.... li seleziona le rows e imposta autosize alla riga della label.....
tienimi aggiornato
ciao
Antonio Esposito
MCTS, MCP
http://blogs.dotnethell.it/espositos
Pokino
Profilo
| Junior Member
91
messaggi | Data Invio:
gio 14 gen 2010 - 16:16
1239_TestWF_varie.zip
dopo un po' di smanetto sembra funzionare.. era un problema di calcolo corretto del delta, riposto il file di esempio.. se hai ulteriori suggerimenti..
tonyexpo
Profilo
| Senior Member
229
messaggi | Data Invio:
gio 14 gen 2010 - 17:02
Mi fa piacere che hai trovato una configurazione appagante ;)
Ho visto che hai disabilitato il resize del form, ma ti consiglio di disabilitare anche minimize e maximize button
ciao, alla prossima
Antonio Esposito
MCTS, MCP
http://blogs.dotnethell.it/espositos
Torna su
Stanze Forum
Elenco Threads
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 !