最近在用DevExpress Report做报表,根据一系列查询条件,然后Show报表。

       今天在测试的过程中发现,如果资料量多的话,在报表呈现出来之前,画面上没有任何提示。这样对于使用者来说是不好的,应该提供一下报表显示的进度。

           定义了一个Report的类。如下:

class Report
{
#region ShowPreview
/// <summary>
/// ShowPreview报表的时候,显示进度条。
/// </summary>
/// <param name="report"></param>
public static void ShowPreview(XtraReport report)
{
// 建立一个Form用来显示progressBar
XtraForm form = new XtraForm();
form.FormBorderStyle = FormBorderStyle.None;
form.Size = new System.Drawing.Size(300, 25);
form.ShowInTaskbar = false;
form.StartPosition = FormStartPosition.CenterScreen;
form.TopMost = true;

//建立一个ProgressBar , ReflectorBar.
ProgressBarControl progressBar = new ProgressBarControl();
progressBar.Properties.PercentView = true;
ReflectorBar reflectorBar = new ReflectorBar(progressBar);

// 把progressBar加入Form并Show。
form.Controls.Add(progressBar);
progressBar.Dock = DockStyle.Fill;
form.Show();

try
{
report.PrintingSystem.ProgressReflector = reflectorBar;
report.CreateDocument();
}
finally
{
report.PrintingSystem.ResetProgressReflector();
form.Close();
form.Dispose();
}

report.ShowPreviewDialog();
}
#endregion
}


调用:

RptLeaves  report=newRptLeaves();

Report.ShowPreview(report);