2012-11-23 32 views
6

Tôi có hộp văn bản có gói văn bản được bật trong ứng dụng Windows Phone 7 của mình, làm cách nào để nhận số dòng tại ký tự do người dùng chọn? Ví dụ: nếu hộp văn bản trông giống như sau:Làm thế nào để có được dòng được chọn trong một hộp văn bản?

test 
text 
bo|x 
is 
here 

, với "|" đại diện cho các nhân vật được lựa chọn, số lượng dòng sẽ là 3. Tôi cần phải làm điều này tại bất kỳ điểm nào trong thời gian, đặc biệt là khi văn bản được thay đổi. Tôi có thể đếm số lượng các dòng mới trong một hộp văn bản mà không bao gói văn bản, nhưng điều này rõ ràng là một kịch bản khác.

+3

Tại sao một câu hỏi hoàn toàn hợp lý sẽ bị giảm giá ở đây? Có gì sai với nó? Bạn có thể vui lòng đưa ra một số phản hồi mang tính xây dựng thay vì chỉ đánh giá thấp câu hỏi của tôi không? – msbg

Trả lời

4

tôi figured này ra bản thân mình:

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

result = dòng được chọn.

+0

tuyệt vời! cám ơn rất nhiều – Quincy

1

chỉ là một cách ngu ngốc:

bạn có thể xử lý các sự kiện: ManipulationStarted ManipulationCompleted

Từ args gọi lại bạn có thể tìm thấy những điểm (x, y) điểm người sử dụng, có thể nó là phối hợp của chọn địa điểm.

và bạn biết chiều cao của everyline từ prop - lineHeight

và làm một bộ phận

+0

Tính năng này hoạt động nhưng chỉ khi người dùng thay đổi lựa chọn bằng ngón tay của họ. Tôi cần phải có được cụ thể hơn. – msbg