首页 > 其他分享 >用WinForm实现进度条显示

用WinForm实现进度条显示

时间:2024-05-07 14:26:07浏览次数:24  
标签:sender 进度条 实现 void object EventArgs private backgroundWorker1 WinForm

  1. 整体UI

  2. backgroundwork事件
    它用于在单独的后台线程上执行耗时的操作,而不阻塞UI线程

  • 创建backgroundwork
        //------------------------backgroundworker_Dowork事件------------------------
        //------------------------(object sender,EventArgs e)具体表示什么意思?------------------------
        //Sender是事件源,表示触发事件的那个组件,比如按钮,标签,列表
        //EventArgs是事件参数,是用来辅助处理事件的,比如用鼠标点击窗体,这个EventArgs就会包含点击的位置信息等相关细节信息
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            //新线程,新任务
            //as
            BackgroundWorker worker = sender as BackgroundWorker;
            for (int i = 1;i<=100;i++) 
            {
                if (worker.CancellationPending == true)
                {
                    e.Cancel = true;//更改运行返回状态,并不能取消停止
                    break;
                }
                else
                {
                    //实际编码的时候,把此处替换为工作代码
                    Thread.Sleep(50);
                    //提交进度报告,非常重要的方法
                    worker.ReportProgress(i);
                }
            }
            e.Result = e.Argument;
        }
  • 事件启动和停止
        //事件启动
        private void button7_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.IsBusy != true)
            {
                backgroundWorker1.RunWorkerAsync("放入启动参数,其实也可以不放");
            }
        }
        //事件停止
        private void button8_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.WorkerSupportsCancellation == true)
            {
                backgroundWorker1.CancelAsync();
            }
        }
  • 进度条变化处理事件
        //进度条变化处理事件
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value=e.ProgressPercentage;
            label2.Text= (e.ProgressPercentage.ToString() + "%");
        }
  • 事件处理完成
        //事件处理完成
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled == true)
            {
                label2.Text = "Canceled";
            }
            else if (e.Error != null)
            { 
                label2.Text="Error"+e.Error.Message;
            }
            else
            {
                label2.Text = "Done!Result=" + e.Result;
            }
        }

标签:sender,进度条,实现,void,object,EventArgs,private,backgroundWorker1,WinForm
From: https://www.cnblogs.com/xiacuncun/p/18177113

相关文章

  • BOSHIDA AC/DC电源模块的设计与实现技巧
    BOSHIDAAC/DC电源模块的设计与实现技巧AC/DC电源模块是一种常用的电源模块,用于将交流电转换为直流电,为各种电子设备提供电力。在设计和实现AC/DC电源模块时,有一些重要的技巧需要注意。 首先,选择适当的拓扑结构对于AC/DC电源模块的性能至关重要。常见的拓扑结构包括线性电源......
  • 多语言实现 - 世界语言对应的简写
    准备多语言文件:messages_en.properties、messages_zh.propertiesLocalelocale=newLocale("en","US");//设置语言为英文,地区为美国ResourceBundlebundle=ResourceBundle.getBundle("messages",locale);Stringmessage=bundle.getString(......
  • Vue实现可拖拽边界布局
    实现可拖拽边界布局一种可拖拽边界的布局,通过拖动分隔线来调整不同区域大小。主要涉及到以下几个方面:布局结构:使用flex布局来实现容器和子元素的分配,使用style绑定来动态调整区域的大小,使用cursor属性来改变鼠标的形状。数据定义:使用data选项来定义不同区域的宽度和高度,以及是......
  • Springboot+Netty实现http和ws统一端口处理
    http:/localhost:8080/apiws:/localhost:8080/ws核心就是两个channel处理器,http和wswebsocketpackagecom.example.netty;importio.netty.channel.ChannelHandlerContext;importio.netty.channel.SimpleChannelInboundHandler;importio.netty.handler.codec.http.HttpH......
  • WinForm下实现子窗体
    如果想要实现在同一个Form下的子窗体切换,下面的方法可以实现。窗体设计,如图增加子窗体。鼠标右键项目,选择添加,选择用户控件注意修改用户控件的大小尺寸,和GroupBox的尺寸匹配。建立好子窗体后,在主Form里面先声明各个子窗体类,如下://定义用户窗口变量......
  • JS实现图表日期分类按色显示
    预想要达成的效果图: 关键步聚: js代码如下function(){vardate=newDate(this);if(date.getDay()==0||date.getDay()==6){return"<fontcolor='red'>"+date.getDate()+"</font>"}else{returndate.getD......
  • 设置Winform窗体内控件跟随窗体大小变化而变化
    点击查看代码#region界面放大处理privatefloatx;//窗体大小全局变量privatefloaty;//窗体大小全局变量#region获取控件的width、height、left、top、字体大小值,存放在控件的Tag属性中privatevoidsetTag(Controlcons){//遍历窗体中的控......
  • pytorch训练简单加减验证码(一):数据加载器实现
    1、torch.utils.data.Datasettorch.utils.data.Dataset是代表自定义数据集方法的类,用户可以通过继承该类来自定义自己的数据集类,在继承时要求用户重载__len__()和__getitem__()这两个魔法方法。len():返回的是数据集的大小。我们构建的数据集是一个对象,而数据集不像序列类型(列表......
  • 数据分享|广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言实现
    全文链接:https://tecdat.cn/?p=36112原文出处:拓端数据部落公众号淋巴结疾病作为一类复杂的健康问题,其风险预测一直是临床和公共卫生领域的研究热点。随着统计学的进步和计算能力的提升,广义线性模型(GLM)成为了分析这类数据的有力工具。特别是当数据呈现比例特性时,beta二项分布作为......
  • vscode/texstudio中实现latex字数统计的方法
    A:vscode 1.在这里免登录下载perl语言:[Download&InstallPerl-ActiveState](https://www.activestate.com/products/perl/),默认安装步骤并将其文件夹路径加入系统Path(使用ActiveState安装的perl其路径在一串杂码下,在安装完成后会显示这个路径,路径名称参见[安装ActiveState......