2012-11-23 6 views
6

私はWindows Phone 7アプリケーションでテキストの折り返しが有効になっているテキストボックスを持っていますが、ユーザーが選択した文字で行数を取得するにはどうすればよいですか?たとえば、テキストボックスが次のように表示されている場合:テキストボックスで選択した行を取得するには?

test 
text 
bo|x 
is 
here 

選択された文字を表す行数は3になります。私はいつでも、テキストが変更されたときにこれを行う必要があります。テキストの折り返しなしでテキストボックス内の改行の数を数えることはできますが、これは明らかに異なるシナリオです。

唯一の愚かな方法
+3

なぜ完全に合理的な質問がここで下降されるのでしょうか?どうしたの?私の質問に格下げするのではなく建設的なフィードバックをお願いしますか? – msbg

答えて

4

行います

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

結果=選択した行を。

+0

優秀!本当にありがとう – Quincy

1

:あなたはこれらのイベントを処理することができます

:ManipulationStarted ManipulationCompleted

あなたは点(x、y)をユーザポイントを見つけることができますコールバック引数から、多分それは選択の座標 です場所。

は、あなたが小道具からeverylineの高さを知っている - lineHeight

をし、私は自分自身をこれを考え出し部門

+0

これは機能しますが、ユーザーが指で選択を変更した場合に限ります。私はより具体的にすべきだった。 – msbg

関連する問題