ReportViewer控件加载指示器?

6 .net reportviewer

是否可以更改ReportViewer控件的图像(绿色旋转的东西)?

目前我隐藏它并重叠进度条(这是WinForms而不是ASP控件)...似乎有点长啰嗦?

谢谢:)

jga*_*ant 13

好吧,你给我一个挑战,我的朋友.但我想出了如何做到这一点.这是我用来解决这个问题的代码:

 Private Sub CustomizeRV(ByVal ctrl As Control)
    For Each c As Control In ctrl.Controls

      If TypeOf c Is PictureBox Then
        Dim pb As PictureBox = DirectCast(c, PictureBox)
        pb.Image = YOURNEWIMAGEHERE
      End If

      If c.HasChildren Then
        CustomizeRV(c)
      End If
    Next
  End Sub
Run Code Online (Sandbox Code Playgroud)

在表单加载事件期间调用此函数,它会将加载映像重新配置为您指定的任何内容(将该函数传递给ReportViewer控件).递归调用该函数,直到找到图片框.ReportViewer控件中只有一个图片框,因此您不必担心找到特定的图片框.


小智 8

再次感谢Jon对原始的VB.NET代码......这是他在C#中的答案......

private void CustomizeReportViewer(Control reportViewer)
{
    foreach (Control c in reportViewer.Controls)
    {
        if (c.GetType() == typeof(PictureBox))
        {
            (c as PictureBox).ImageLocation = "C:\\Loading.gif";
            return;
        }

        if (c.HasChildren)
            CustomizeReportViewer(c);
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

对于那些为WinForms而不是ASP.NET而感到沮丧的人来说,这是与web相同的解决方案:

Private Sub CustomizeRV(ByVal ctrl As Control)
    For Each c As Control In ctrl.Controls
        If String.Compare(c.ID, "AsyncWait")=0 Then
            DirectCast(c.Controls(0).Controls(0), Image).ImageUrl = ResolveUrl("~/images/PleaseWait.gif")
        End If

        If c.HasControls Then CustomizeRV(c)

    Next

End Sub
Run Code Online (Sandbox Code Playgroud)