.net ReportViewer控件加载指示器?

.net ReportViewer控件加载指示器?,.net,reportviewer,.net,Reportviewer,是否可以更改ReportViewer控件的图像(绿色旋转对象) 目前我正在隐藏它并重叠一个进度条(这是WinForms而不是ASP控件)。。。好像有点啰嗦 谢谢:)好吧,你给了我一个挑战,我的朋友。但我知道怎么做了。下面是我用来实现这一点的代码: Private Sub CustomizeRV(ByVal ctrl As Control) For Each c As Control In ctrl.Controls If TypeOf c Is PictureBox Th

是否可以更改ReportViewer控件的图像(绿色旋转对象)

目前我正在隐藏它并重叠一个进度条(这是WinForms而不是ASP控件)。。。好像有点啰嗦


谢谢:)

好吧,你给了我一个挑战,我的朋友。但我知道怎么做了。下面是我用来实现这一点的代码:

 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

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

再次感谢Jon提供的原始VB.NET代码。。。这是他的答案


对于那些认为这是针对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

非常感谢分享这个问题。刚刚将上面的vb.net代码转换为c#.net并更改了图像的后搁浅颜色

private void CustomizeRV(Control ReportViewCntr)
{
    foreach (Control c in ReportViewCntr.Controls)
       {            
          if ((string.Compare(c.ID, "AsyncWait") == 0))
          {   
            Image i = (Image)c.Controls[0].Controls[0];
            i.ImageUrl = ResolveUrl("~/Images/loading.gif");
            //i.BackColor = System.Drawing.Color.Gray; 
            i.BackColor = System.Drawing.ColorTranslator.FromHtml("#e6e6e6");
           }
          if (c.HasControls())
          {
            CustomizeRV(c);
        }
    }
}

感谢您提供代码示例以替换AsyncWait中的图像控件。在我将report viewer控件升级到最新版本(即15.0.0.0版)之前,它一直工作得非常好

升级后,@Pratik代码示例中位于“c.Controls[0].Controls[0]”位置的控件不再是图像控件。因此,它抛出一个错误,表示无法将LiteralControl转换为image

我尝试使用上面的代码,并进行了一些小的编辑,如下所示:

 protected void CustomizeRV(Control ReportViewCntr)
    {
        foreach (Control c in ReportViewCntr.Controls)
        {
            if ((string.Compare(c.ID, "AsyncWait") == 0))
            {
                c.Controls[0].Controls.RemoveAt(0);                    
                Image i = new Image();
                i.ImageUrl = ResolveUrl("~/images/loading.gif");
                //i.BackColor = System.Drawing.Color.Gray; 
                i.BackColor = System.Drawing.ColorTranslator.FromHtml("#e6e6e6");
                c.Controls[0].Controls.AddAt(0, i);
            }
            if (c.HasControls())
            {
                CustomizeRV(c);
            }
        }
    }
然而,它并没有像预期的那样工作


有没有其他方法可以用gif图像替换新的文字控件?

哈哈,是的!我正在使用DevExpress WinForm的东西。。。有一个光滑的黑色主题与这个愚蠢的(像素化)绿色的东西在中间。工作得很好。我已将您的代码转换为C#以用于此项目(我会将其作为答案包含在内,以便格式化)-但谢谢!我不明白为什么他们一开始就没有选择这个?
 protected void CustomizeRV(Control ReportViewCntr)
    {
        foreach (Control c in ReportViewCntr.Controls)
        {
            if ((string.Compare(c.ID, "AsyncWait") == 0))
            {
                c.Controls[0].Controls.RemoveAt(0);                    
                Image i = new Image();
                i.ImageUrl = ResolveUrl("~/images/loading.gif");
                //i.BackColor = System.Drawing.Color.Gray; 
                i.BackColor = System.Drawing.ColorTranslator.FromHtml("#e6e6e6");
                c.Controls[0].Controls.AddAt(0, i);
            }
            if (c.HasControls())
            {
                CustomizeRV(c);
            }
        }
    }