建立一个公用的进度条控件,每次加载较慢的时候使用以改进用户体验。
通过启用新线程的方式来进行调用。
步骤如下:
- 建立一个单独的窗体,包含一个进度条控件
- 设置进度条的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. 运行结果如下