近日实现了水晶报表中对于CrystalReportViewer的鼠标滚轮支持,希望可以给帮助到有需要的朋友。下面给出了CrystalReportViewer的MouseWheel的事件处理函数:
private void crystalReportViewer1_MouseWheel(object sender, MouseEventArgs e)
{
Control pageView = null;
CrystalDecisions.Windows.Forms.PageView temp_pageView = new CrystalDecisions.Windows.Forms.PageView();
foreach(Control control in this.crystalReportViewer1.Controls)
{
if(control.GetType() == temp_pageView.GetType())
{
pageView = control;
break;
}
}
if(pageView != null)
{
CrystalDecisions.Windows.Forms.DocumentControl docControl = null;
TabControl temp_tabControl = new TabControl();
foreach(Control control in pageView.Controls)
{
if(control.GetType() == temp_tabControl.GetType())
{
TabControl tc = (TabControl)control;
docControl = (CrystalDecisions.Windows.Forms.DocumentControl)tc.SelectedTab;
break;
}
}
if(docControl != null)
{
Point point = docControl.AutoScrollPosition;
int y = (-1)*point.Y;
point.Offset(0,2*y);
Int16 numberOfLinesToMove =(short)(e.Delta*SystemInformation.MouseWheelScrollLines / 120);
int numberOfPixelsToMove =numberOfLinesToMove* 10;
point.Offset(0/*numberOfLinesToMove*/,(-1)*numberOfPixelsToMove);
docControl.AutoScrollPosition = point;
}
}
}