2011-10-09 54 views
0

如何在执行_DataReceived中的动作时显示进度条(不是百分比只是无限的栏)还是等待对话框?在接收串行数据时显示进度条/等待对话框

例如为:

private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
     { 
      try 
      { 
       while (sp.BytesToRead > 1) 
       { 
        string line = sp.ReadLine().Trim(); 

        if (line == "EOC") 
        { 
         //finish 
        } 
        else 
        { 
         //string data = sp.ReadExisting(); 
         _serialBuffer.Enqueue(line); 
        } 
      } 

} 

回答

1

只需添加一个进度条,设置它的StyleProgressBarStyle.Marquee,所以它表明它不给的百分比。现在,如下增加它的价值: (我假设这个代码是在Form,否则,如果您使用的是BackgroundWorker,使用其ReportProgress法)

private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
      { 
       try 
       { 
        while (sp.BytesToRead > 1) 
        { 
         string line = sp.ReadLine().Trim(); 

         if (line == "EOC") 
         { 
          //finish 
          this.progressBar1.Visible = false; 
         } 
         else 
         { 
          //string data = sp.ReadExisting(); 
          _serialBuffer.Enqueue(line); 
          if (this.progressBar1.Value < 100) 
           this.progressBar1.Value++; 
          else 
           this.progressBar1.Value = 0; 
         } 
       } 

    }