2012-11-30 28 views
1

我需要上传记录从excel工作表到sql服务器 上传时,我需要显示devexpress进度条 的进展,并且也以上传1 100和它应该直到它完成devexpress进度条performtep方法没有显示

+1

我建议使用MarqueeProgressBasrControl来代替。使用进度条控件时,您需要知道行数。有些文件可能很大。 –

回答

4

创建一个BackgroundWorker并报告进度回到主GUI线程。然后使用来自BackgroundWorker的状态更新进度栏值。

这里是一个例子,它使用了一个普通的WinForms ProgressBar而不是DevExpress的ProgressBar,但原理是一样的。

public partial class Progress : Form 
{ 
    readonly BackgroundWorker _worker = new BackgroundWorker(); 

    public Progress() 
    { 
     InitializeComponent(); 

     _worker.WorkerReportsProgress = true; 
     _worker.DoWork += _worker_DoWork; 
     _worker.ProgressChanged += WorkerProgressChanged; 
     _worker.RunWorkerCompleted += WorkerRunWorkerCompleted; 

     _worker.RunWorkerAsync(); 
    } 


    private void _worker_DoWork(object sender, DoWorkEventArgs e) 
    { 
     var worker = sender as BackgroundWorker; 

     // Simulate work (uploading Excel records to SQL Server) 
     for (var i = 1; i <= 100; i++) 
     { 
      if (worker.CancellationPending) 
      { 
       e.Cancel = true; 
       break; 
      } 

      // Upload some data here, Sleep(100) is just an example 
      Thread.Sleep(100); 

      // Calculate current progress and report 
      worker.ReportProgress(i); 
     } 
    } 

    void WorkerProgressChanged(object sender, ProgressChangedEventArgs e) 
    { 
     _progressBar.Value = e.ProgressPercentage; 
    } 

    void WorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     _progressBar.Value = 0; 
    } 
}