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
Problema MaskedTextBox
giovedì 30 novembre 2006 - 12.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
man27
Profilo
| Newbie
3
messaggi | Data Invio:
gio 30 nov 2006 - 12:43
Buongiorno a tutti, sto cercando di risolvere un problema che sembra facile ma in realtà non riesco ad uscirne.Mi spiego, ho una procedura che dato un datatable contentene dati anagrafici esegue una select in base a quello che l'utente mi inserisce nel controllo MaskedTextBox, ogni volta che il risultato della select è maggiore di zero vado ad inserire nel controllo MaskedTextBox il primo datarow estratto, selezionando quindi il testo meno quello inserito dall'utente.
Questa procedura viene eseguita ogni volta che viene chiamato l'evento MaskedTextBox__TextChanged.
Ora il problema sta proprio nella selezione del testo, in quanto il testo non viene selezionato sebbene vengano impostati correttamente sia selectionStart che selectionLength
Se non inserisco il testo a runtime il tutto funziona ma se modifico a runtime il testo della MaskedTextBox la selezione non viene effettuata.
Da precisare inoltre che il testo inserito è conforme con il tipo di dati impostato per la maschera.
Spero in un aiuto.
lucios
Profilo
| Newbie
30
messaggi | Data Invio:
gio 30 nov 2006 - 13:27
Ma setti il focus sulla MaskedEditBox ? Mi sembra che con le caselle di testo normali vada fatto...
Ciao
man27
Profilo
| Newbie
3
messaggi | Data Invio:
gio 30 nov 2006 - 13:51
si il focus viene settato, secondo me il problema nasce dall'assegnazione di un valore al MaskedTextBox, in quanto come è giusto che sia fa scattare l'evento textchanged, quindi viene riavviata la procedura ed eseguita. Alla fine di essa come è lecito pensare riprende quella lasciata in sospeso, e setta i valori selectionStart e selectionLenght. A debug i valori sono corretti ed in effetti il comportamento della procedura è corretto, però quando esce non viene eseguita nessuna selezione e il cursore si muove sull'ultimo carattere come se tenesse in considerazione solo i valori del selectionStart e selectionLengt impostati in precedenza quando cioè ho settato il valore della MaskedTextBox.
Per intenderci una cosa simile:
data.focus
data.Text = r(0).Item("DATANASCITA")
data.focus
data.SelectionStart = Len(T.Replace("/", "").TrimEnd(" "))
data.SelectionLength = Len(Convert.ToDateTime(r(0).Item("DATANASCITA")).ToShortDateString) - ((Len(T.Replace("/", "").TrimEnd(" ")) + 2))
se tolgo l'assegnazione tutto funziona correttamente ma se assegno il valore come sopra la selezione non funziona.
???
man27
Profilo
| Newbie
3
messaggi | Data Invio:
gio 30 nov 2006 - 15:20
Ho risolto il problema è dato dalla proprietà mask, in effetti se non si utilizza nessuna mask la selezione come descritto sopra funziona, se invece la si utilizza essa blocca la selezione del testo, nel mio caso era una maschera per date del tipo:
00/00/0000
impostando la maschera uguale a "" prima di inserire il valore a runtime e reimpostandola subito dopo il problema scompare.
Naturalmente perchè questo sia vero bisogna impostare la proprietà TaskMaskFormat a ExcludePromptAndLiterals.
Ora è un metodo sporco per risolvere però nel mio caso è stata l'unica soluzione.
Ringrazio per la collaborazione.
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 !