建立一个公用的进度条控件,每次加载较慢的时候使用以改进用户体验。
通过启用新线程的方式来进行调用。
步骤如下:
- 建立一个单独的窗体,包含一个进度条控件
- 设置进度条的Style为ProgressBarStyle.Marquee
- 增加一属性(LoadCompleted)标示加载是否完成
- 在其它窗体中通过开启新线程进行调用
View Code
1 public partial class UcLoadData_ShowMarqueeProcess : UserControl 2 { 3 public static FrmMarqueeProcess xf; 4 public static event EventHandler onLoadFinished; 5 6 public UcLoadData_ShowMarqueeProcess() 7 { 8 InitializeComponent(); 9 } 10 11 private void btnFill_Click(object sender, EventArgs e) 12 { 13 int iEnd = 10000; 14 Thread t = new Thread(new ThreadStart(ShowProcess)); 15 t.Start(); 16 17 for (int i = 0; i < iEnd; i++) 18 { 19 string strContent = string.Format("this is the {0}th record", i); 20 this.lstContent.Items.Add(strContent); 21 } 22 23 onLoadFinished += new EventHandler(LoadFinish); 24 if (onLoadFinished != null) 25 onLoadFinished.Invoke(sender, e); 26 27 while (!xf.LoadCompleted) 28 Application.DoEvents(); 29 30 t.Abort(); 31 } 32 private static void ShowProcess() 33 { 34 xf = new FrmMarqueeProcess(); 35 xf.ShowDialog(); 36 } 37 38 private static void LoadFinish(object sender, EventArgs e) 39 { 40 xf.LoadCompleted = true; 41 } 42 }
3. 运行结果如下