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
Intercettare un "WordWrap"...strano ma vero...come fare?
domenica 13 agosto 2006 - 17.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
D0X
Profilo
| Newbie
43
messaggi | Data Invio:
dom 13 ago 2006 - 17:53
Ciao!
Come al solito faccio una delle mie domande strane...spero che qualcuno abbia avuto un'esperienza simile.
Volevo sapere se conoscete un modo per intercettare il verificarsi di un carriege return automatico quando si setta la proprietà di WordWrap su una textbox multiline.
Spiego meglio:
Mi sono accorto che il WordWrap di una textbox ha un problema: la stringa che genera quando si va a capo automaticamente grazie al WordWrap NON contiene, in realtà, il carattere di carriege return!!! Se si cattura il testo contenuto nella textbox e si disegna con una DrawString viene messo tutto sulla solita linea anche se nella textbox era andato a capo per il WordWrap.
Ovviamente, se si va a capo esplicitamente con ENTER la stringa disegnata con DrawString è correttamente disegnata su 2 righe (la stringa contiene un \r\n evidentemente....)!
Detto questo, io volevo intercettare quando si verifica un "vai a capo" a causa del WordWrap all'interno della TextBox (così ci ficco a forza un return in quel punto....) ma pare non esistere nulla di questo tipo.....
Vediamo se ho stimolato la curiosità di qualcuno!!! :D
Ciao!!!
-------------------------SOLUZIONE------------------------------
Allora....ho trovato una soluzione. Effettivamente, nella drawstring il WordWrap del controllo viene ignorato se viene chiamata una draw di questo tipo:
e.Graphigs.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), 0, 0, StringFormat.GenericDefault);
E' il genericDefault che da fastidio....ovviamente quel parametro fa in modo di fare una drawstring standard senza preoccuparsi dei caratteri speciali inseriti dal controllo da cui viene catturata la stringa (in questo caso una TextBox con un WordWrap settato...).
Per far andare il tutto, basta lavorare su quel parametro. Funziona in questo modo:
e.Graphigs.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), 0, 0, new StringFormat(StringFormatFlags.DisplayFormatControl));
In questo modo la drawstring lavora prendendo in sconsiderazione il setting del controllo proprietario del testo....Così, se il WordWrap è attivo, la stringa disegnata conterrà i carriage return della TextBox.
Spero possa servire a qualcuno dato che questi "problemi" sono quelli che ti fanno perdere ore e ore...ci metto di meno a scrivere un algoritmo di clipping che a lavorare su queste "finezze"...mannaggia hehehehe :D
Ciao!
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 !