gpt4 book ai didi

c# - `ScrollToCaret` 滚动到所选文本的末尾,如何滚动到它的开头?

转载 作者:太空狗 更新时间:2023-10-29 23:45:15 24 4
gpt4 key购买 nike

在通过搜索框找到文本后,我试图使所选文本在文本框控件中可见。

我尝试了以下代码:

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 方法滚动到所选文本的末尾或所选文本的最后一行。因此,如果它跨越多行并且这部分的高度大于文本框的高度,则部分选定文本可能会保持不可见。

请注意我也不能将插入符号设置为选择开始,因为我会松开所选文本的突出显示。

如何确保所选文本可见,或者换句话说,滚动到所选文本的第一行,同时保持其突出显示?

最佳答案

[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

关于c# - `ScrollToCaret` 滚动到所选文本的末尾,如何滚动到它的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com