http://community.youkuaiyun.com/Expert/topic/5694/5694560.xml?temp=.9589044
思路都是一样的,不过写法我不会C#,就找了一篇类似的贴上来
源代码来源:
http://www.cnblogs.com/submaie/archive/2006/12/05/474568.html
1、注册事件
2、拦截消息,然后激发事件
protected override void OnMouseWheel(MouseEventArgs e)
{
base.OnMouseWheel(e); // 向基类注册事件。
if(pageInfo.Length == 0 || !_havewheel) // 无内容或客户没有滚轮鼠标,退出
return;
// 计算应该卷动的行数,鼠标滚轮滚动一格后,内容移动的行数
// 这个行数用 WHEEL_DELTA 常量表示,定义在另一个文件
// 在MSDN中,WHEEL_DELTA 常量推荐选择 120 ,在Windows的头文件中也是这样设置的
// 但我发现如果选择120的话,滚动速度很慢,所以我选择了20这个数。
// 数字可以自行设定,数字越小,则滚轮每滚动一格,
// 内容页滚动的行数越多
float scrollRatio = e.Delta * SystemInformation.MouseWheelScrollLines / Define.WHEEL_DELTA; // WHEEL_DELTA 常量,这里选择了20
Point p = position; // 当前页面所在的位置。
// 因为鼠标滚轮仅负责上下滚动,所以
// 获取当时预览页面的纵轴位置 482
int y = p.Y;
// 获取打印预览窗口的高度
//height = Math.Max(base.Height, virtualSize.Height);
int height = Math.Min(base.Height, virtualSize.Height); // 659
&nb