手动选择控件的元素而不知道其名称...(ReportViewer)

时间:2009-10-10 07:02:30

标签: c# reportviewer setfocus onmousedown

我正在使用我的c#应用程序中的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));
};

谢谢!

1 个答案:

答案 0 :(得分: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);
           }
       }
   }