外层控件获取Scroll事件
在自定义控件中放入了几个listView   设置listView1.Scrollable   =   false; 
 自定义控件放入一个窗口中设置为:contorl1.AutoScroll   =   true; 
 为什么鼠标中键滚动对自定义控件不起作用!! 
 大家帮帮忙,谢谢!
------解决方案--------------------主要代码如下 
 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   
             /*  
              * 实际上算法很简单,y 变量表示垂直滚动条标记方块的位置 
              * height 变量表示显示区域的高度,因为有滚动条,所以 
              * 使用Math.Max() 方法获取的就是 virtualSize.Height 
              * virtualSize.Height表示预览窗口里面的内容页的大小 
              * base.Height 表示显示打印预览控件的大小 
              * 而内容页有可能比控件要大得多, 
              * 所以我就选择了窗口大小为height的值 
              * 当滚轮向下滚动,则计算后得出的 scrollRatio 值为负值 
              * 此时就必须检查 y 的值,看当前页面处于什么位置 
              * 如果在页面底部,就看有没有下页,如果有,就转到下页 
              * 同样,向上滚动也这样处理。 
              *  
              * 另外,必须注意,当滚动到下页或上页时,页面的纵轴y还处于原来的位置 
              * 这表示如果上页处于页面最底部状态,下翻到下一页,还处于页面最底部。 
              * 所以必须设定,如果下翻到下一页,那么y值必须设定到页面顶部。 
              * 上翻同样,上翻到上一页,则y值设置到页面底部。 
              *  
              * 设定好以后,就给Position 属性赋值,赋值的操作实际上就是调用 
              * SetPositionNoInvalidate()  方法 
             */ 
             if (scrollRatio  < 0) // 负数,向下滚动 
             { 
                 // 检查当前页面的y位置,是否处于底部。 
                 if(y > = (height - 177)) 
                 { 
                     if(StartPage  < (pageInfo.Length - 1)) // 如果有下页,就翻页,Length不是从零开始,必须减1 
                     { 
                         StartPage++; 
                         y = 0; // 到下一页后,显示的应该是页面顶部。 
                         p.Y = y; 
                         Position = p; 
                         return; 
                     } 
                     y = height; // 没有下页,就不翻页,直接到页面底部。 
                     p.Y = y; 
                     Position = p; 
                     return; 
                 } 
                 // 不是处于底部 
                 y += (int) Math.Abs(scrollRatio); // 纵轴加上滚动距离数 
                 p.Y = y; // 指定位置。 
                 Position = p; // 开始移动。 
             } 
             else // 正数,向上滚动 
             { 
                 y = p.Y; 
                 if(y  <= 5) // 如果页面处于顶部状态 
                 { 
                     // 检查是否有上页 
                     if(StartPage >  0) // 有就翻到上页 
                     { 
                         StartPage--; 
                         // 到上页后,位置应该是上页的底部 
                         y = height; 
                         p.Y = y; 
                         Position = p; 
                         return; 
                     } 
                     // 如果没有上页,则把页面调整到顶部