最近在做一个项目,需要用到等待窗体,在DevExpress下面有SplashScreen控件可以使用,同时也有ProgressIndicator控件能用,但是如果没有用Dev开发的话,我们就需要自定义一个等待窗体了。

本项目开放源代码,下载地址见本文末尾(如果本程序有帮助到您,希望留言评论,感谢)

VS环境:vs2017,低版本环境可以使用VS Convert转换工具进行版本转换,或者直接看源代码,复制到新项目中也可以。

首先,把截图放上来:(界面没有优化)

多功能Loading中,实现了实时显示执行进度的功能,该功能也可以改进为用进度条显示。

实现的功能比较简单,就是在程序处理 一些耗时比较多的代码时,将Loading窗体展示给用户,并在后台执行耗时操作,这样能够给用户较好的体验。

核心代码是我自己写的一个SplashScreenManager类:有2个方法:1、ShowLoading()2、CloseLoading()

调用方法举例:

//实例化一个窗口,窗口需要自己定义哦
SimpleLoading loadingfrm = new SimpleLoading(this);
//将Loaing窗口,注入到 SplashScreenManager 来管理
GF2Koder.SplashScreenManager loading = new GF2Koder.SplashScreenManager(loadingfrm);
loading.ShowLoading();
//try catch 包起来,进行异常处理
try
{
//模拟耗时操作
for (int i = 0; i < 20; i++)
{
Thread.Sleep(100);
} }
catch (Exception) { /*可选处理异常*/ }
finally { loading.CloseWaitForm(); }

需要显示进度的话,举例:

public static bool flag = true;
private void button2_Click(object sender, EventArgs e)
{
flag = true;//flag 为false时候,退出执行耗时操作 MultiFuncLoading loadingfrm = new MultiFuncLoading(this);
// 将Loaing窗口,注入到 SplashScreenManager 来管理
GF2Koder.SplashScreenManager loading = new GF2Koder.SplashScreenManager(loadingfrm);
loading.ShowLoading();
// 设置loadingfrm操作必须在调用ShowLoading之后执行
loadingfrm.SetTxt("多功能Loaidng界面", "拼命加载中...客官耐心等待", "Please Waitting...");
// try catch 包起来,进行异常处理
try
{
//模拟耗时操作
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
loadingfrm.SetJD("当前:"+i+"/总计:100","当前进度:"+i);
if (!flag) { break;/*用户点击取消执行后,跳出循环*/ }
} }
catch (Exception) { /*可选处理异常*/ }
finally { loading.CloseWaitForm(); }
}

  

附录:

这个程序的第一个版本参考了 网名为 “八哥” 的一个程序,当时我在群里面的时候,感谢他的热情帮助。

现将我的代码贴出来吧,里面用的了委托的概念。大家如果不懂的话,可以百度一下,这里给出几个链接:

http://blog.csdn.net/ggz631047367/article/details/44646233

http://www.runoob.com/csharp/csharp-delegate.html

http://blog.csdn.net/sjj2011/article/details/7835200

http://blog.csdn.net/testcs_dn/article/details/37671513

另外附上下载链接:V1.0 不支持下载 (该版本有BUG,线程在init函数中调用的,可能会出现卡顿,请下载V2版本)

V2版本下载地址:V2.0下载(新建进程执行耗时操作,该版本不再提供下载)

V3版本下载地址:V3.0下载(主进程执行耗时操作)

c# winForm 等待窗体的实现的更多相关文章

  1. C#Winform之等待窗体

    窗体主要代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  2. 【C#】分享带等待窗体的任务执行器一枚

    -------------201504161039更新------------- 更新内容: IWaitForm接口删除System.Windows.Forms.DialogResult Dialog ...

  3. 【C#】带等待窗体的BackgroundWorker

    ---------------201504170911更新--------------- 更新内容:删除bgwUI新增的Start方法,改为通过new修饰符+可选参数的方式同时覆盖基类(Backgro ...

  4. C#中的“等待窗体”对话框

    这篇文章向您展示了如何在c#.net Windows窗体应用程序中创建一个等待窗体对话框.创建一个新表单,然后输入您的表单名称为frmWaitForm.接下来,将Label,Progress Bar控 ...

  5. Devexpress 等待窗体

    加载窗体以及等待窗体 程序加载时,需要等待加载完成后在显示 窗体显示顺序 1. 给用户看的等待窗体 2. 加载完成后的主窗体 代码如下: 1. 等待窗体代码 #region using using S ...

  6. C#关于等待窗体(转)

    c#.net 中如果想在主窗口A里点击打开新窗口B(因为要数据库操作,Bload需一小段时间)之前弹出带有滚动条等待子窗口C来提示用户没有死机,应该怎么做?我用多线程打开了c窗口,但是问题:1.C窗口 ...

  7. Winform子窗体刷新父窗体

    调用窗体(父):Form1,被调用窗体(子):Form2方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...} ...

  8. Winform跨窗体操作控件(使用委托)

    Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,F ...

  9. WinForm 设置窗体启动位置在活动屏幕右下角

    WinForm 设置窗体启动位置在活动屏幕右下角 在多屏幕环境下, 默认使用鼠标所在的屏幕 1. 设置窗体的 StartPosition 为 FormStartPosition.Manual. 2. ...

随机推荐

  1. NCPC 2013: Dance Reconstruction

    题目大意 对一个初始矩阵进行置换操作,已知经K次置换后得到的矩阵为,求一组可能的. 样例解释 这里只选取第二组样例进行解释. 4 2 3 4 1 2 2 3 4 1 初始矩阵为,根据Sample Ou ...

  2. OpenStack云计算(二)——OpenStack 计算

    http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-nova-glance/

  3. zxing扫码--镭射线

    同步发表于http://avenwu.net/2015/09/15/zxing_view_finder_laser 在很多应用中都有二维码扫描的需求,比如微信,通过扫描电脑二维码,实现用户登录授权: ...

  4. Entity Framework: Joining in memory data with DbSet

    转载自:https://ilmatte.wordpress.com/2013/01/06/entity-framework-joining-in-memory-data-with-dbset/ The ...

  5. samba 服务器的搭建

    一,安装samba4 不要直接 yum install samba ,默认安装的是samba3版本,但这个版本有问题(open_rpc_pipe_p: copy_serverinfo failed这个 ...

  6. 解决Spring+Quartz无法自动注入bean问题

    问题 我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中.无奈此方式有个问题:Spring Bean无法自动注入. 环境:Spring3.2.2 + Q ...

  7. 创建 iPhone/iOS8 弹出菜单(窗口)

    基本步骤 添加视图:主视图与弹出视图 关联视图 配置弹出视图 编码实现:弹出菜单样式及控制器委托 override func prepareForSegue(segue: UIStoryboardSe ...

  8. Ext JS 6 入门学习资料大全(2016-12-14)

    现在 sencha touch已经升级为 Ext JS 6 了重新整理下资料 官方网站:https://www.sencha.com/ 在线文档:http://docs.sencha.com/extj ...

  9. Android Studio开发第四篇版本管理Git(下)

    前面一片介绍了在as下如何关联远程仓库,这篇就介绍在开发过程中怎么应用. 提交+Push 如果本地开发代码有改动了或者你觉得某功能做完了,你打算把改动代码提交到远程仓库,这个时候很简单, 还是在工具栏 ...

  10. Unix sed实用教程系列目录[已完成]

    本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有讲明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感 ...