WPF中判断滚动条滚动条滑倒了最底端
来源:互联网 发布:spss问卷数据录入 编辑:程序博客网 时间:2024/05/17 01:00
先是获取滚动条的方法
(可以获取到空间内部自带的ScrollViewer)
#region 获取所有控件子级元素的方法,返回该类型的List集合
public static List<T> GetChildObjects<T>(DependencyObject obj) where T : FrameworkElement
{
DependencyObject child = null;
List<T> childList = new List<T>();
for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
{
child = VisualTreeHelper.GetChild(obj, i);
if (child is T)
{
childList.Add((T)child);
}
childList.AddRange(GetChildObjects<T>(child));
}
return childList;
}
#endregion
#region 内部滚动条滚动到底部后接着滚动外部滚动条
private void 控件名_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
List<ScrollViewer> scrollList = GetChildObjects<ScrollViewer>((控件的类型)sender);//查找改控件内部的ScrollViewer集合
ScrollViewer scroll = scrollList[0];
double delta = e.Delta;
double verticalOffset = scroll.VerticalOffset;
if (delta < 0)
{
scroll.ScrollToVerticalOffset(verticalOffset += 25);
if (IsVerticalScrollBarAtButtom(scroll))
{
List<ScrollViewer> parentscrollList = GetChildObjects<ScrollViewer>((控件的类型)上一节控件的父级控件);
ScrollViewer parentScroll = parentscrollList[0];
double parentdelta = e.Delta;
double parentverticalOffset = parentScroll.VerticalOffset;
if (listboxdelta < 0)
{
parentScroll.ScrollToVerticalOffset(parentverticalOffset += 25);
}
else
{
parentScroll.ScrollToVerticalOffset(parentverticalOffset -= 25);
}
}
}
else
{
scroll.ScrollToVerticalOffset(verticalOffset -= 25);
}
}
#endregion
#region 判断滚动条是否到达最底部的代码 需要传进来一个ScrollViewer对象
public bool IsVerticalScrollBarAtButtom(ScrollViewer s)
{
bool isAtButtom = false;
double dVer = s.VerticalOffset;
double dViewport = s.ViewportHeight;
double dExtent = s.ExtentHeight;
if (dVer != 0)
{
if (dVer + dViewport == dExtent)
{
isAtButtom = true;
}
else
{
isAtButtom = false;
}
}
else
{
isAtButtom = false;
}
if (s.VerticalScrollBarVisibility == ScrollBarVisibility.Disabled
|| s.VerticalScrollBarVisibility == ScrollBarVisibility.Hidden)
{
isAtButtom = true;
}
return isAtButtom;
}
#endregion
- WPF中判断滚动条滚动条滑倒了最底端
- 滚动条 最底端
- JTextArea滚动条自动拉到最底端
- WPF判断scrollbar是否滚动了最下面
- WPF中ListBox滚动条自动滚动
- DataGridView滚动到最底端
- C#中实现文本框的滚动条自动滚到最底端
- C#中实现文本框的滚动条自动滚到最底端
- C#中实现文本框的滚动条自动滚到最底端
- 如何用JS判断滚动条拉到了最底部
- Android 中 ScrollView滚动不到最底端的解决方法
- Android 中 ScrollView滚动不到最底端的解决方法
- Android 中 ScrollView滚动不到最底端的解决方法
- 页面滚动动态加载数据,页面下拉自动加载内容 ,滚动条滚动到最底端加载数据
- jquery让滚动条一直处于底端
- 10、去掉页面底端滚动条
- 使 JTextArea的滚动条总在最顶端或最底端
- DataGridView 垂直滚动到最底端
- Total Commander 批量重命名之位数对齐
- Java多线程(3)——多线程通信(传智播客毕老师视频讲解)
- KEmulator eclipse 调试
- spring3.1 jar依赖关系
- 大智慧F10离线文件下载—大智慧V5.997下载
- WPF中判断滚动条滚动条滑倒了最底端
- C++中qsort对不同类型数组排序
- 开发中遇到字节对齐的问题
- 【1140】面向对象程序设计上机练习一(函数重载)
- Unity3D游戏开发之自由视角状态下的角色控制(二)
- Java学习--JDBC操作数据库(直析操作)
- 64位centos上用ganglia-3.6.0监控hadoop-2.2.0集群
- 如何给MFC的菜单项添加快捷键
- 信号量 互斥锁 条件变量的区别(讲的很好,值得收藏)