1

我在我的 c# 应用程序中使用 reportviewer 类,并且有一个问题不是必须解决的,但我想弄清楚一些问题。

假设我启动了一个新表单,其中包含一个完全停靠的 reportviewer 控件,当表单加载时,reportviewer 已刷新并显示我的报告。

在几乎所有情况下,报表都会比表单的垂直尺寸长,因此会有垂直滚动条。

我想做的是想办法给reportviewer控件焦点或选择的“报告区域”部分,这样当表单加载时——我可以立即使用鼠标上的滚轮上下移动报告

实际发生的是滚动条在我单击报告区域之前不起作用。

有谁知道如何关注该特定领域?

这是我试图重点关注该领域的一些代码......

int x = this._ReportViewer.Location.X + (this._ReportViewer.Width / 2);
int y = this._ReportViewer.Location.Y + (this._ReportViewer.Height / 2);

this._ReportViewer.RenderingComplete += delegate
{
    this.OnMouseClick(new MouseEventArgs(MouseButtons.Left, 1, x, y, 1));
};

谢谢!

4

1 回答 1

1

想到的一个想法是递归地遍历 ReportViewer 控件。在点击报告区域后,将焦点设置到该控件。

这是一个示例片段:

   //Call this function, by passing it your reportViewer control
   private void RecurseControls(Control ctrl)   
   {
       foreach (Control c in ctrl.Controls) {  //Put breakpoint here to see the controls being looped

           if (c is <TYPEOFCONTROLYOURLOOKINGFOR>) {              
               //CAST c AND SET FOCUS TO IT
           }

           if (c.HasChildren) {  //recurse if children controls exist
               CustomizeRV(c);
           }
       }
   }
于 2009-10-20T17:57:01.697 回答