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看起来好像就是一个图片一样。

LoadingBar,布布扣,bubuko.com

时间: 2024-11-13 23:11:24

LoadingBar的相关文章

Cocostudio学习笔记(4) LoadingBar+ TextField

这篇记录了两个控件的使用流程:LoadingBar和 TextField. ---------------------------------------------------------------------------------------------------------------------------- LoadingBar ----------------------------------------------------------------------------

CocoStudio使用笔记2:cocos2dx3.9使用CocoStudio制作的进度条LoadingBar

作为菜鸟曾一直使用手写cocos2dx界面,最近一直在研究cocostudio这个工具.尝试着使用工具来快速的开发游戏,折腾了一个多星期了,每天不停的搜索资料. 记录下本人试用cocostudio制作的启动界面所遇到的问题和经验,方便以后查阅. 首先设置编辑器的分辨率为480*800安卓分辨率的大小. 添加一个sprite精灵使用大小为480*800的图片(background.png)作为背景,然后添加sprite精灵作为游戏logo(logo.png),继续添加sprite作为进度条的背景(

Cocos2d-x3.3Final(5)LoadingBar常用成员函数(C++)

loadingbar就是进度条,如果要实现进度条的滑动,我们必须要实现update函数例如: void HelloWorld::update(float delta) { _count++; if (_count > 100) _count = 0; LoadingBar * loadingBar = static_cast<LoadingBar *>(getChildByTag(0)); loadingBar->setPercent(_count); //设置进度条的位置 } 除

【原生JS插件】LoadingBar页面顶部加载进度条

先展示一下已经实现的效果: 看到手机上的浏览器内置了页面的加载进度条,想用在pc上. 网上搜了一下,看到几种页面loading的方法: 1.在body头部加入loading元素,在body页脚写入脚本让loading元素消失. 2.基于jquery,在页面的不同位置插入脚本,设置滚动条的宽度. 简单分析一下: 第一个明显不是我想要的. 第二个要在body前加载jquery,然后还要使用到jquery的动画方法,性能肯定达不到最优的状态. 自己的解决方法:原生JS+css3 上面的方法2其实是可以

cocos2dx3.0 超级马里奥开发笔记(一)——loadingbar和pageview的使用

学完cocos2dx课程的第一个项目选择了超级玛丽.可以说有自己的想法,简单但是确实不简单. 我花了一天把一份2.1版本的超级玛丽源码升级到了3.0,改改删删,参考那个源码虽然好多不懂,但是马虎升级成功,游戏正常玩耍. 本着不为把游戏做出来而写代码的想法,罗列了一下这个游戏可以使用到的知识点.数据持久化的三种方式.loading页面.tmx地图解析.cocosStudio场景.屏幕适配.关卡如何选择.代码结构的优化(各种类的抽象继承),在基本功能出来后可以自己去设计变态关卡等. 两天实现了loa

Cocos2d-x3.0 LoadingBar

.h中添加 int _count; Layout* layout; void update(float delta); layout = Layout::create(); layout->setSize(Size(widgetSize.width, widgetSize.height)); //横向排列,这里类似Android里的线性布局 //layout->setLayoutType(LAYOUT_RELATIVE); /*以图片为背景*/ layout->setBackGround

使用 AngularJS &amp; NodeJS 实现基于 token 的认证应用(转)

认证是任何 web 应用中不可或缺的一部分.在这个教程中,我们会讨论基于 token 的认证系统以及它和传统的登录系统的不同.这篇教程的末尾,你会看到一个使用 AngularJS 和 NodeJS 构建的完整的应用. 一.传统的认证系统 在开始说基于 token 的认证系统之前,我们先看一下传统的认证系统. 用户在登录域输入 用户名 和 密码 ,然后点击 登录 : 请求发送之后,通过在后端查询数据库验证用户的合法性.如果请求有效,使用在数据库得到的信息创建一个 session,然后在响应头信息中

CocosCreator手记02——Examples中文注释目录

任何游戏引擎的都会有一套例子库.用于展示引擎的功能和API的用法. 最近看CocosCreator引擎附带的例子库.目前来说这套Cocos系列引擎的最新版,很有诚意,对比老引擎.加入了很多新的内容.比如资源下载器装载器,各种布局管理工具.预制资源.网络库.碰撞系统.也预留了扩展接口.当然整个引擎也支持插件式扩展. 可惜的是,这份例子是1.5版的,但是没有演示1.5新加的功能,比如物理引擎,摄像机等.另外,个别例子需要对应平台才能跑,在有些平台跑不了.有些例子功能重复,或无法正确演示.但这些都是小

cms-登陆

先介绍下登陆的思路: 1.在登陆页面首先前端验证用户名和密码是否正确,如果验证通过,则ajax的方式向后台提交数据. 2.在controller层,将得到的用户名名和密码封装进shiro的token,在提交token过程中如果成功则登陆成功,如果出现异常则登陆失败,并且把登陆情况发送回登陆页面 3.controller层执行subject时候调用realm,realm里面有俩个函数,一个验证权限一个验证身份,在此调用验证身份的函数.在token中得到传过来的用户名,根据用户名查询与该用户名对应的