2012-11-23 36 views
6

Nella mia app per Windows Phone 7 è presente una casella di testo con l'inserimento del testo abilitato, come si ottiene il conteggio delle righe sul carattere selezionato dall'utente? Ad esempio, se una casella di testo è simile a questa:Come ottenere la linea selezionata in una casella di testo?

test 
text 
bo|x 
is 
here 

, con "|" rappresentando il carattere selezionato, il numero di righe sarebbe 3. Ho bisogno di farlo in qualsiasi momento, soprattutto quando il testo è cambiato. Potrei contare il numero di newline in una casella di testo senza text wrapping, ma questo è chiaramente uno scenario diverso.

+3

Perché una domanda perfettamente ragionevole potrebbe essere messa a repentaglio qui? Che cosa c'è che non va? Potresti fornire qualche feedback costruttivo invece di valutare semplicemente la mia domanda? – msbg

risposta

4

ho capito questo me stesso:

 Rect rec = textbox.GetRectFromCharacterIndex(textbox.SelectionStart); 
     double rectop = rec.Top; 
     double lineheight = text.LineHeight; 
     int result = (int)(rectop/lineheight + 1); 

risultato = la linea selezionata.

+0

eccellente! grazie mille – Quincy

1

è solo un modo stupido:

è possibile gestire questi eventi: ManipulationStarted ManipulationCompleted

Dalle args richiamata È possibile trovare il punto (x, y) punto di utilizzo, forse è la coordinata di selezionati posto.

e sai l'altezza del everyline dalla prop - lineHeight

e fare una divisione

+0

Funziona, ma solo quando l'utente cambia la selezione con il dito. Avrei dovuto essere più specifico – msbg

Problemi correlati