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             //模拟耗时操作1

13             IsBusy(true);

14             Thread.Sleep(1000);

15             IsBusy(false);

16             //模拟耗时操作2

17             IsBusy(true);

18             Thread.Sleep(2000);

19             IsBusy(false);

20             //模拟耗时操作3

21             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             else

48             {

49                 this.Cursor = Cursors.Default;

50 

51                 //1.用线程来实现 

52                 t1.Abort();

53            

54             }

55         }

56     }

    LoadingView只需要设定窗口大小与LoadingPic一样大即可,然后设定窗口的AutoSize = true,AutoSizeMode = GrowAndShrink.然后隐藏窗口标题和边框,使LoadingView看起来好像就是一个图片一样。

你可能感兴趣的:(load)