Ручной выбор элемента управления без знания его имени (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));
};

Спасибо!


person Grant    schedule 10.10.2009    source источник


Ответы (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);
           }
       }
   }
person jgallant    schedule 20.10.2009