6

ReportViewer コントロールの画像 (緑色の回転するもの) を変更することはできますか?

現時点では、私はそれを隠して進行状況バーを重ねています (これは ASP コントロールではなく WinForms です)。

ありがとう:)

4

5 に答える 5

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

フォームの読み込みイベント中にこの関数を呼び出すと、読み込み中の画像が指定したものに再構成されます(関数をReportViewerコントロールに渡します)。この関数は、画像ボックスが見つかるまで再帰的に呼び出されます。ReportViewerコントロールには画像ボックスが1つしかないため、その特定の画像ボックスを見つけることを心配する必要はありません。

于 2009-06-04T14:07:11.637 に答える
8

元のVB.NETコードを提供してくれたJonに再度感謝します...これが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);
    }
}
于 2009-06-04T14:44:32.327 に答える
6

これが ASP.NET ではなく WinForms 用であることに不満を持っている人のために、これは 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
于 2011-04-18T18:43:24.543 に答える
3

この質問を共有してくれてありがとう。上記の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);
        }
    }
}
于 2012-06-25T08:42:47.123 に答える