博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinForm自定义Loading控件
阅读量:4499 次
发布时间:2019-06-08

本文共 1726 字,大约阅读时间需要 5 分钟。

    在VS2008下封装WinForm自定义Loading控件。

 

     AutoCircle.cs封装了旋转的圆形,直接在里面添加Label的话,计算圆形扇面的方法有点小复杂,所以在LoadingPanel.cs将AutoCircle和Label封装在一起。该控件中提供了当LoadingPanel状态变化时的事件public event RotateStateChangedHandler OnRotateStateChanged,当打开或关闭LoadingPanel时,可以用此事件来禁用/开启页面其他控件或做其他处理。

    LoadingPanel暴露了几个属性可以对AutoCircle进行外观的设置

  

    

1 private delegate bool DoWorkDelegate();  2  3  4         public Form1()  5         {
6 InitializeComponent(); 7 8 this.loadingPanel1.OnRotateStateChanged += new LoadingPanel.RotateStateChangedHandler(loadingPanel1_OnRotateStateChanged); 9 } 10 11 void loadingPanel1_OnRotateStateChanged() 12 {
13 this.Invoke(new Action(delegate() 14 {
15 this.lblTip.Visible = !this.lblTip.Visible; 16 this.btnAsync.Enabled = !this.btnAsync.Enabled; 17 })); 18 } 19 20 private bool DoWork() 21 {
22 System.Threading.Thread.Sleep(5000); 23 return true; 24 } 25 26 private void DoWorkCallBack(IAsyncResult ar) 27 {
28 AsyncResult result = (AsyncResult)ar; 29 DoWorkDelegate caller = (DoWorkDelegate)result.AsyncDelegate; 30 bool bResult = caller.EndInvoke(ar); 31 32 this.loadingPanel1.Stop(); 33 } 34 35 private void btnAsync_Click(object sender, EventArgs e) 36 {
37 DoWorkDelegate doWorkDelegate = this.DoWork; 38 doWorkDelegate.BeginInvoke(new AsyncCallback(DoWorkCallBack), null); 39 this.loadingPanel1.Start(); 40 }

    示例源码: 

    下载地址:

    个人学习,仅供参考

转载于:https://www.cnblogs.com/lichence/archive/2011/08/16/2140684.html

你可能感兴趣的文章
c# Mongodb两个字段不相等 MongoDB原生查询
查看>>
排序算法-冒泡排序
查看>>
finally 的作用是什么?
查看>>
嵌入式Linux的调试技术
查看>>
CSS3
查看>>
用友U9 基础使用文件所在目录
查看>>
iOS CALayer 学习(1)
查看>>
jquery 分页控件(一)
查看>>
StackAndQueue(栈与队列)
查看>>
大话数据结构之一(绪论、算法)
查看>>
[转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化
查看>>
天涯宝盒-天涯看贴脚本-只看楼主-自动翻页
查看>>
实战MEF(5):导出元数据
查看>>
python中获取文件目录的方法
查看>>
南阳oj 分数加减法
查看>>
边工作边刷题:70天一遍leetcode: day 61-6
查看>>
边工作边刷题:70天一遍leetcode: day 86-2
查看>>
URLOS安装、升级、卸载
查看>>
Algorithm: 最大公约数 最小公倍数
查看>>
Spark之搜狗日志查询实战
查看>>