我已经通过相关的问题进行了搜索,但找不到我需要的东西。RichTextBox在visual studio中的垂直滚动条操作
我有一个richtextbox控件。当垂直滚动条到达某个位置(比如90%到底部)时,我需要触发一个事件。我一直在玩富文本框的事件,但还没有找到任何东西。
任何帮助将不胜感激。
我已经通过相关的问题进行了搜索,但找不到我需要的东西。RichTextBox在visual studio中的垂直滚动条操作
我有一个richtextbox控件。当垂直滚动条到达某个位置(比如90%到底部)时,我需要触发一个事件。我一直在玩富文本框的事件,但还没有找到任何东西。
任何帮助将不胜感激。
您可以处理VScoll
事件检测垂直滚动和使用功能
private static double GetRichTextBoxScrolPos(RichTextBox textBox)
{
if(textBox1.TextLength == 0) return 0;
var p1 = textBox.GetPositionFromCharIndex(0);
var p2 = textBox.GetPositionFromCharIndex(textBox.TextLength - 1);
int scrollPos = -p1.Y;
int maxScrolPos = p2.Y - p1.Y - textBox.ClientSize.Height;
if(maxScrolPos <= 0) return 0;
double d = 100.0 * (double)scrollPos/(double)maxScrolPos;
if(d < 0) d = 0;
else if(d > 100) d = 100;
return d;
}
确定滚动位置。结果是%(100%=完全滚动到底部)。
重要注意事项:此功能不是绝对准确,但您可能会发现结果准确无误。可以通过测量底线高度进一步改善(例如使用Graphics
对象)。 100%可靠的方法是获取VScrollBar
句柄并使用WinAPI查询它的位置,但这将需要更多的工作。
快速说明,你使用WPF或WinForms? – Dennis 2010-06-07 00:05:34
Visual Studio的WinForms – Kizaru 2010-06-07 00:08:32