如题...
现在通过GetScrollPos获取了滚动条移动的相对位置...
也通过SystemInformation得到滚动条上下箭头的位图高度...
请问怎样才能知道滚动按钮已经到达了滚动区域最底部呢???
现在通过GetScrollPos获取了滚动条移动的相对位置...
也通过SystemInformation得到滚动条上下箭头的位图高度...
请问怎样才能知道滚动按钮已经到达了滚动区域最底部呢???
解决方案 »
- vs2010中winform程序如何生成release版本?
- 还是一个sql加锁的疑问
- 如何在WinFrom中实现图片的放大缩小
- 请问:在.net中如何实现模板选择
- vs2005的WebService问题
- 如何在c# WINFORM DATAGRID中设置 密码项为*号
- c#连接SQL 用SELECT 查询问题
- vs2012 组件继承DEV13.2的控件之后,该组件无法在工具栏显示
- 求救一个与指针类型参数匹配的问题?
- 大家好,请问哪里有关于C#系统类库方法大全和控件参考手册之类的资料下载,帮个忙,我这里急用。
- sql查询难题:如何将某列值作为查询内容?
- 请教高手:水晶报表图表的图片发布后不能显示
//解释一下,这语句会把滚动条滚到最后,得到滚动条位置就得总高度啦.不过你得总高度干嘛,可能是显示最后一条吧?
SystemInformation.HorizontalScrollBarHeight
(注意: 我们的眼睛是可以看到它已经滚动到最后.可是程序不知道啊,因为它不触发任何事件.)To: hbxtlhx...看到您的到来我挻开心的.是真的...不过,我不是这个意思! 我是想在它滚动到后面时,做其他的操作....最后,感谢两位 ^o^ ...
我的ListView现在就有100条记录, 在这100条记录当中, 只有前50条才可以直接在ListView的可见区域(ClientRectangle)里面看得到, 而后50条须要拖动水平滚动条的.
当用户拖动滚动条的时候, 怎样才能让[程序]知道第(80)条记录已经可以直接在[可见区域]里面看得到呢???而不是存在于虚拟区域(DisplayRectangle)当中...
^o^ 思路是有的, 不过我不知道.Net有没有现成的方法可以实现! 还请大家指点...
ScrollEventArgs在这个类型中有如下类型的属性:
public ScrollEventType Type { get; }因此我们可以在Scroll事件里通过如下的代码得到滚动条是否滚动到了最大值:private void hScroll(object sender, ScrollEventArgs e)
{
if (e.Type == ScrollEventType.Last)
{
//到了最大的滚动值
}
}但是在ListView中不能直接的得到这个事件,不过楼主有足够的时间来研究的话,可以在Listview中找到要处理的滚动条句柄,由系统函数可以通过这个句柄得到我们需要的信息.我只是这个想法,并没有实现的实现过.
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Win32;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication13
{
delegate void DelegeteScrollBottom(int newvalue,int oldvalue);
class MyListView : ListView
{
public MyListView()
{ } /// <summary>
/// 水平滚动事件
/// </summary>
public event DelegeteScrollBottom Scroll;
private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;
private int OldVscrollValue = 0; [DllImport("user32")]
public static extern int GetScrollPos(IntPtr hWnd, int nBar);
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_VSCROLL: int NewVscrollValue = GetScrollPos(m.HWnd, 1); if (Scroll != null)
{ Scroll(NewVscrollValue, OldVscrollValue); } OldVscrollValue = NewVscrollValue;
base.WndProc(ref m);
break; default:
base.WndProc(ref m);
break;
}
}
}
}为ListView 写了个垂直滚事件,可以得到新值和旧值/////////////////////////////////////////
自已已经解决的问题...<-----在事件中判断一下新值==你解决的高度就是到底啦.再等待其他人的方案.明天结贴了...请大家也发表一下吧...///////////////////
LZ也发你怎么获取高度代码上来看看吧..交个朋友QQ5970356