Выбор элемента управления вручную, не зная его имени ... (ReportViewer) - PullRequest
1 голос
/ 10 октября 2009

Я использую класс reportviewer в своем приложении на c # и у меня есть вопрос, который не нужно исправлять, но кое-что я хотел бы выяснить.

Допустим, я запускаю новую форму с полностью закрепленным элементом управления 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));
};

Спасибо!

1 Ответ

1 голос
/ 20 октября 2009

Одна идея, которая приходит в голову, - рекурсивно перебирать элементы управления 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);
           }
       }
   }
...