1

私は自分の 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));
};

ありがとう!

4

1 に答える 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 に答える