- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 C# 中的 RichTextBox。它存在于 TabPage 上。选择 TabPage 后,我的目标是填充 RichTextBox,然后滚动到末尾。我尝试了针对这个常见问题的解决方案的细微变化,主要的是:
MyRichTextBox.Select(MyRichTextBox.Text.Length, 0);
MyRichTextBox.ScrollToCaret();
或者:
MyRichTextBox.SelectionStart = MyRichTextBox.Text.Length;
MyRichTextBox.ScrollToCaret();
这会产生不一致的结果,尽管是以一种可预测的方式。它将在滚动到底部和滚动到距离底部少一行之间交替。分别说明(对不起链接,新用户所以我不能发布图片):
Successfully scrolled to bottom
Scrolled to one line short of the bottom
我很惊讶在我的搜索中没有发现任何提及这种行为的信息,因此我决定询问这里是否有人遇到过这种情况,和/或是否有解决方案。如果归结为它,我想我可以按照 itsmatt's answer 的方式去做。 .
最佳答案
我对 ScrollToCaret 做了一些进一步的实验,但它并不是每次都在相同的位置结束。由于我的目标仅限于一直滚动到底部,因此它是将 WM_VSCROLL 消息(277 或 0x115)发送到控件的一个很好的候选者,wParam 为 SB_PAGEBOTTOM (7)。这完全按照我的需要一直滚动到最底部:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
private const int WM_VSCROLL = 277;
private const int SB_PAGEBOTTOM = 7;
public static void ScrollToBottom(RichTextBox MyRichTextBox)
{
SendMessage(MyRichTextBox.Handle, WM_VSCROLL, (IntPtr)SB_PAGEBOTTOM, IntPtr.Zero);
}
关于c# - RichTextBox ScrollToCaret 的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535102/
在通过搜索框找到文本后,我试图使所选文本在文本框控件中可见。 我尝试了以下代码: String searchText = "multiple lines of text."; int position
我正在使用 C# 中的 RichTextBox。它存在于 TabPage 上。选择 TabPage 后,我的目标是填充 RichTextBox,然后滚动到末尾。我尝试了针对这个常见问题的解决方案的细微
当非 UI 线程尝试将其输出附加到 RichTextBox 时,会发生难以跟踪的异常主线程中的 UI 控件。 此异常随机发生,主要是在线程快速连续调用此方法时。它甚至发生在 2 个非 UI 线程中。
我在 RichTextBox.ScrollToCaret 方面遇到了一个有点令人沮丧的障碍。我有将消息打印到 RichTextBox 的代码。当每条消息发送到表单时,它被分成多行并格式化,然后连接每一
我找不到那个函数。基本上我有一个多行文本框,当我执行搜索时,我会突出显示结果。但是,如果结果不在 View 中,我将不得不手动向下滚动,直到找到突出显示的结果,这超出了“查找”功能的目的。 我不想使用
我是一名优秀的程序员,十分优秀!