C# window forms 进度条实现

这篇具有很好参考价值的文章主要介绍了C# window forms 进度条实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 C# Windows Forms 应用程序中,如果在后台执行长时间运行的任务,并希望同时更新进度条,可以使用多线程来实现。这将确保进度条的更新不会阻塞主线程,从而保持界面的响应性。以下是一个示例,演示了如何在后台执行任务并更新进度条。


using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace BackgroundWorkerExample
{
    public partial class MainForm : Form
    {
        private BackgroundWorker worker;

        public MainForm()
        {
            InitializeComponent();

            worker = new BackgroundWorker();
            worker.WorkerReportsProgress = true;
            worker.DoWork += Worker_DoWork;
            worker.ProgressChanged += Worker_ProgressChanged;
            worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
        }

        private void StartButton_Click(object sender, EventArgs e)
        {
            if (!worker.IsBusy)
            {
                worker.RunWorkerAsync();
                StartButton.Enabled = false;
            }
        }

        private void Worker_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i <= 100; i++)
            {
                Thread.Sleep(50); // 模拟任务的延迟
                worker.ReportProgress(i);
            }
        }

        private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            StartButton.Enabled = true;
            MessageBox.Show("任务完成!");
        }
    }
}
 

在这个示例中,使用了 `BackgroundWorker` 组件来在后台执行任务并更新进度条。`BackgroundWorker` 组件允许使用事件来管理后台工作的不同阶段。

在 `Worker_DoWork` 方法中,执行模拟任务并使用 `worker.ReportProgress` 方法报告进度。在 `Worker_ProgressChanged` 方法中,我们更新进度条的值。最后,在 `Worker_RunWorkerCompleted` 方法中,启用“开始”按钮并显示任务完成的消息。文章来源地址https://www.toymoban.com/news/detail-652489.html

到了这里,关于C# window forms 进度条实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#winform软件移植上linux的秘密,用GTK开发System.Windows.Forms

    国产系统大势所趋,如果你公司的winform界面软件需要在linux上运行,如果软件是用C#开发的,现在我有一个好的快速解决方案。 世界第一的微软的Microsoft Visual Studio,确实好用,C# 开发起来确实效率高,不过微软的开发语言开发的软件的界面都是跟windows系统绑定的,现在.ne

    2024年02月12日
    浏览(30)
  • 【Linux从入门到精通】C语言模拟实现进度条小程序

        在Linux下,我们安装软件时会经常看到进度条,来告知我们安装的进度。我们不妨自己模拟实现一个进度条,看看其中的细节。模拟实现进度条并不困难,但其中的细节我们又不可忽视。 本篇文章会对模拟实现进度条进行详解 。 文章目录 一、进度条整体模板 二、输出缓

    2024年02月03日
    浏览(31)
  • 【Linux】C语言实现超级简单进度条!你不会还不知道吧?

    目录 1. 基础准备🎍 1.1 rn 1.2 缓冲区 2. 进度条1.0🥀 2.1 Process.h 2.2 Process.c 2.3 Main.c 2.4 Makefile 3.进度条 2.0🪺 3.1 Process.h 3.2 Process.c 3.3 Main.c 回车和换行是2个动作: 换行:换到新的一行(默认末尾) 回车:回到新的一行的最开始 n既可以是回车也可以是换行 但是r是真正的

    2024年03月13日
    浏览(36)
  • flutter开发实战-flutter_spinkit实现多种风格进度指示器

    flutter开发实战-flutter_spinkit实现多种风格进度指示器 最近开发过程中flutter_spinkit,这个拥有多种种风格加载指示器 引入flutter_spinkit 效果示例 代码如下 flutter开发实战-flutter_spinkit实现多种风格进度指示器. 学习记录,每天不停进步。

    2024年02月14日
    浏览(32)
  • Windows(C#)音频开发-Windows Core Audio(WASAPI)

    本文的例子使用NAudio.CoreAudioApi实现,全部为C#代码 以下仅为个人理解,不一定都对,勿信~ 阅读这个文档,最好具备C++知识,因为会用到Marshal命名空间进行指针操作 Windows Core Audio API 是一种非常底层的音频API,上层应用为DirectSound或者WaveXXX接口等,WASAPI是其中的一部分。 W

    2024年01月17日
    浏览(72)
  • 软件国际化的问题 C#得到当前windows系统的语言版本

    本以为跟国际化无缘,不在软件的考虑范围内,没想到偶尔一个项目还是绕不开,小记一下 System.Globalization.CultureInfo.InstalledUICulture.Name       这是获得英文的区域码,也就是zh-cn的这种,需要找区域码字典对照。 System.Globalization.CultureInfo.InstalledUICulture.NativeName     区域码对

    2024年02月08日
    浏览(36)
  • C# 控制台进度条

    https://github.com/Mpdreamz/shellprogressbar

    2024年01月23日
    浏览(57)
  • C#窗口的Form.AcceptButton 属性和Form.CancelButton 属性

    C#窗口的Form.AcceptButton 属性和Form.CancelButton 属性 初入门时,看到这两个属性一般不太关注它,因为这两个属性在窗口设计上也不需要设置就可以工作,因为默认了按下回车键的动作。 如果自己程序里创建的窗口,就需要小心了,需要通过手动设置这两个属性才能正确地使用回

    2024年02月01日
    浏览(22)
  • C#: form 窗体的各种操作

    说明:记录 C# form 窗体的各种操作         在C# Win Form中,可以通过设置控件的Anchor属性来实现窗口拉大时其他控件跟着变大的效果。Anchor属性指定了控件与其父容器之间的边界锚定方式。         例如,如果你想要一个按钮在窗口拉大时保持在左上角不变,可以将该

    2024年01月19日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包