Intercettare un "WordWrap"...strano ma vero...come fare?

domenica 13 agosto 2006 - 17.53

D0X Profilo | Newbie

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!
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5