Ahm*_*mad 5 c# textbox visibility winforms
我通过搜索框找到文本后,我试图在文本框控件中显示所选文本.
我尝试了以下代码:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |