2014-10-30 15 views
5

Tôi đang cố gắng hiển thị văn bản đã chọn trong điều khiển hộp văn bản sau khi tìm thấy văn bản qua hộp tìm kiếm.`ScrollToCaret` cuộn đến cuối văn bản đã chọn, làm cách nào tôi có thể cuộn đến đầu của văn bản đó?

Tôi đã thử các mã sau:

String searchText = "multiple lines of text."; 
int position = textBox.Text.IndexOf(searchText); 
textBox.SelectionStart = position; 
textBox.SelectionLength = searchText.Length; 
textBox.ScrollToCaret(); // caret is at the end of the selected text 

ScrollToCaret phương pháp cuộn đến cuối văn bản đã chọn hoặc dòng cuối cùng của văn bản đã chọn. Vì vậy, nếu nó kéo dài đến nhiều dòng và chiều cao của phần này lớn hơn chiều cao của hộp văn bản, một phần của văn bản đã chọn có thể vẫn ẩn.

Xin lưu ý rằng tôi cũng không thể đặt dấu mũ cho lựa chọn bắt đầu vì tôi sẽ làm nổi bật phần đánh dấu trên văn bản đã chọn.

Làm cách nào để đảm bảo văn bản đã chọn hiển thị hoặc nói cách khác là cuộn đến dòng đầu tiên của văn bản đã chọn trong khi vẫn giữ nó được tô sáng?

+0

Tôi không thể xác nhận, đây là lựa chọn đầy đủ được hiển thị. – TaW

+0

Giả sử bạn đã cuộn xuống rất nhiều để văn bản dự định của bạn kéo dài trong nhiều dòng bị ẩn, bây giờ nếu bạn chọn văn bản đó và sử dụng ScrollToCaret thì thanh cuộn chỉ dừng ở cuối văn bản đã chọn, vị trí được đặt. – Ahmad

Trả lời

1
[DllImport("user32.dll")] 
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);  

int numLines = textBox1.GetLineFromCharIndex(textBox1.SelectionStart); 
//scroll to top 
SendMessage(textBox1.Handle, 0x115, 6, 0); //WM_VSCROLL 
//scroll numLines 
SendMessage(textBox1.Handle, 0xB6, 0, numLines); //EM_LINESCROLL 
+3

Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. – gunr2171

Các vấn đề liên quan