从富文本框控件获取当前滚动位置?我在互联网上搜索了很多这样的问题,但我没有看到实际的答案。我有一个富文本框控件,里面有很多文本。它在这个控件中有一些法律信息。默认情况下,“接受”按钮被禁用。我想在滚动事件中检测v滚动条的位置是否在底部。如果它在底部,请启用该按钮。如何检测当前的v滚动条位置?谢谢!编辑我正在使用WinForms(.Net4.0)这应该让你接近你想要的。此类继承自RichTextBox并使用一些pinvoking来确定滚动位置。它添加了一个事件ScrolledToBottom,如果用户使用滚动条滚动或使用键盘,该事件就会被触发。公共类RTFScrolledBottom:RichTextBox{公共事件EventHandlerScrolledToBottom;私有常量intWM_VSCROLL=0x115;私人常量intWM_MOUSEWHEEL=0x20A;私人常量intWM_USER=0x400;私人常量intSB_VERT=1;私有常量EM_SETSCROLLPOS=WM_USER+222;私人常量intEM_GETSCROLLPOS=WM_USER+221;[DllImport("user32.dll")]privatestaticexternboolGetScrollRange(IntPtrhWnd,intnBar,outintlpMinPos,outintlpMaxPos);[DllImport("user32.dll")]privatestaticexternIntPtrSendMessage(IntPtrhWnd,Int32wMsg,Int32wParam,refPointlParam);publicboolIsAtMaxScroll(){intminScroll;int最大滚动;GetScrollRange(this.Handle,SB_VERT,outminScroll,outmaxScroll);点rtfPoint=Point.Empty;SendMessage(this.Handle,EM_GETSCROLLPOS,0,refrtfPoint);返回(rtfPoint.Y+this.ClientSize.Height>=maxScroll);}protectedvirtualvoidOnScrolledToBottom(EventArgse){if(ScrolledToBottom!=null)ScrolledToBottom(这个,e);}protectedoverridevoidOnKeyUp(KeyEventArgse){if(IsAtMaxScroll())OnScrolledToBottom(EventArgs.Empty);base.OnKeyUp(e);}protectedoverridevoidWndProc(refMessagem){if(m.Msg==WM_VSCROLL||m.Msg==WM_MOUSEWHEEL){if(IsAtMaxScroll())OnScrolledToBottom(EventArgs.Empty);}base.WndProc(refm);}}这就是如何使用它:publicForm1(){InitializeComponent();rtfScrolledBottom1.ScrolledToBottom+=rtfScrolledBottom1_ScrolledToBottom;}privatevoidrtfScrolledBottom1_ScrolledToBottom(objectsender,EventArgse){acceptButton.Enabled=true;}根据需要调整问题如何获取RichTextBox的滚动位置?可能会有帮助,请查看此函数richTextBox1.GetPositionFromCharIndex(0);以下在我的一个解决方案中完美运行:以上是C#学习教程:从富文本框控件获取当前滚动位置?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——PointP=newPoint(rtbDocument.Width,rtbDocument.Height);intCharIndex=rtbDocument.GetCharIndexFromPosition(P);如果(rtbDocument.TextLength-1==CharIndex){btnAccept.Enabled=true;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
