问题描述
如下代码:[DllImport("user32.dll",EntryPoint="GetScrollPos")]publicstaticexternintGetScrollPos(IntPtrhwnd,intnBar);privatevoidbutton1_Click(objectsender,EventArgse){//一.得到垂直滚动条的位置inti=GetScrollPos(this.listView1.Handle,1);//二.难点在这一步,如何取得listView1控件的滚动条区域的长度intb=1;//三.判断if(i==b){MessageBox.Show("到底部了");}}通过第一步可以获取到当前滚动条的位置,难点在第二部,如何知道这个位置已经位于该控件的底部了呢?我想实现一个效果,就是实现文本框的刷新,如果滚动条位置位于底部了,我就自动将焦点更新到最新的文本,如果滚动条位置并非在底部(正在拖动滚动条查看前面的数据),我就不更新焦点。想实现这个效果就必须要能够实时判断滚动条是否位于底部了,请教各位大神。
解决方案
解决方案二:
把滚动条拉到底部,看下GetScrollPos(this.listView1.Handle,1)
的值len,如果i小于len就是没到底咯
解决方案三:
引用1楼lovelj2012的回复:
把滚动条拉到底部,看下GetScrollPos(this.listView1.Handle,1)的值len,如果i小于len就是没到底咯
我的意思就是不滚动到底部就能获取到i的值
解决方案四:
我的建议,和你不滚到底部,没冲突啊。你先让它拉到底部,获取这个时候的值,比如说len。也就是说只要GetScrollPos(this.listView1.Handle,1)不等于len,肯定是没到底部的啦。
解决方案五:
滚动条到底的时候,好像当前位置值+最大的步移量=长度,