首页 > 代码库 > LoadingBar
LoadingBar
在系统中,如果在进行耗时的操作,一般都会通知UI告之用户操作正在进行。一般情况下可以设置Cursor来设置鼠标指标的图形来通知UI,但是这样看起来不会特别明显,所以显示一个比较明显的Loading Bar加载条是普遍的选择。
耗时操作分为很多种,根据是否能得到完成的百分比分为"不可预知时间操作"(比如调用一个WEB服务,可能根据网络善状况的情况时间又不一样)和"可预知时间操作"(比如下载文件,可以根据已下载的字节数,来预知文件完成的百分比和大概的一个总的耗费时间)
针对"不可预知时间操作"的情况,因为无知得知完成的百分比,所以只能显示一个Loading Bar告之用户操作正在进行,但是没法告之显示的百分比。由于ProgressBar不太美观而且不可能满足所有的要求,所以新建一个loadingView加载一个loading的图片,通知UI忙碌的时候即显示loadingView,操作完成则关闭loadingView。主页面代码如下
1 public partial class Form1 : Form 2 { 3 private Thread t1 = null; 4 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void btn_Login_Click(object sender, EventArgs e)11 {12 //模拟耗时操作113 IsBusy(true);14 Thread.Sleep(1000);15 IsBusy(false);16 //模拟耗时操作217 IsBusy(true);18 Thread.Sleep(2000);19 IsBusy(false);20 //模拟耗时操作321 IsBusy(true);22 Thread.Sleep(3000);23 IsBusy(false);24 }25 26 /// <summary>27 /// 设置UI是否处于忙碌状态28 /// </summary>29 /// <param name="isBusy"></param>30 private void IsBusy(bool isBusy)31 {32 33 if (isBusy)34 {35 this.Cursor = Cursors.WaitCursor;36 37 //1.用线程来实现 38 t1 = new Thread(new ThreadStart(new Action(() =>39 {40 LoadingView loading = new LoadingView();41 loading.ShowDialog();42 })));43 t1.Start();44 45 46 }47 else48 {49 this.Cursor = Cursors.Default;50 51 //1.用线程来实现 52 t1.Abort();53 54 }55 }56 }
LoadingView只需要设定窗口大小与LoadingPic一样大即可,然后设定窗口的AutoSize = true,AutoSizeMode = GrowAndShrink.然后隐藏窗口标题和边框,使LoadingView看起来好像就是一个图片一样。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。