如题...
现在通过GetScrollPos获取了滚动条移动的相对位置...
也通过SystemInformation得到滚动条上下箭头的位图高度...
请问怎样才能知道滚动按钮已经到达了滚动区域最底部呢???
现在通过GetScrollPos获取了滚动条移动的相对位置...
也通过SystemInformation得到滚动条上下箭头的位图高度...
请问怎样才能知道滚动按钮已经到达了滚动区域最底部呢???
解决方案 »
- 怎样在datatable上实现条件是子查询的过程,代码如下,请大家帮帮忙,在线等等
- SQL语句编译器
- 定义一个DataSet的对象,如何在2个按钮下起作用?
- [分享]我的随机字符串类
- Crystal Report 嵌入Excel OLE (很奇怪的问题)
- 请教各位大虾字符转换问题,急!急!!急!!!
- *****紧急求助,c#中comboBox的用法*****
- 难题!javascript 能否判断出来grid view的行数?!
- (在线,急!)判断页面是关闭还是刷新用ASP.NET(c#)
- 新问题~,readonly和const有什么区别?
- 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