c#winform 进度条

C# WinForm进度条:实现一个进度条,用于显示任务完成的百分比。

在C中,我们可以使用WinForms的ProgressBar控件来实现进度条效果,以下是详细的步骤和代码示例:

1、我们需要在WinForms项目中添加一个ProgressBar控件,可以在工具箱中找到它,然后将其拖放到窗体上。

c#winform 进度条

2、接下来,我们需要设置ProgressBar的属性,在属性窗口中,我们可以设置以下属性:

Maximum:进度条的最大值,即进度条的最大长度。

Value:进度条的当前值,即进度条的当前长度。

Minimum:进度条的最小值,即进度条的最小长度。

c#winform 进度条

Left:进度条的左边缘与窗体左边缘的距离。

Top:进度条的上边缘与窗体上边缘的距离。

Width:进度条的宽度。

Height:进度条的高度。

c#winform 进度条

3、现在,我们需要编写代码来更新ProgressBar的值,这通常在后台线程中完成,以避免阻塞UI线程,以下是一个简单的示例,演示了如何使用BackgroundWorker组件来更新ProgressBar的值:

using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace WinFormsProgressBarDemo
{
    public partial class MainForm : Form
    {
        private BackgroundWorker _backgroundWorker;
        public MainForm()
        {
            InitializeComponent();
            InitializeBackgroundWorker();
        }
        private void InitializeBackgroundWorker()
        {
            _backgroundWorker = new BackgroundWorker();
            _backgroundWorker.DoWork += BackgroundWorker_DoWork;
            _backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;
            _backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;
        }
        private void StartProgressBar()
        {
            if (_backgroundWorker.IsBusy != true)
            {
                _backgroundWorker.RunWorkerAsync();
            }
        }
        private void StopProgressBar()
        {
            if (_backgroundWorker.IsBusy == true)
            {
                _backgroundWorker.CancelAsync();
            }
        }
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i <= 100; i++)
            {
                if (_backgroundWorker.CancellationPending == true)
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    // 模拟耗时操作,例如下载文件或处理大量数据
                    System.Threading.Thread.Sleep(50); // 暂停50毫秒
                    _backgroundWorker.ReportProgress(i); // 报告进度
                }
            }
        }
        private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            // 更新ProgressBar的值和标签文本
            progressBar1.Value = e.ProgressPercentage;
            progressBar1.Text = string.Format("进度:{0}%", e.ProgressPercentage);
        }
        private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled == true)
            {
                progressBar1.Value = 0; // 如果任务被取消,将进度条设置为0%
                progressBar1.Text = "已取消"; // 显示“已取消”标签文本
            }
            else if (e.Error != null) // 如果发生错误,显示错误信息并停止进度条动画(仅适用于WinForms)
            {
                progressBar1.Value = 0; // 将进度条设置为0%
                progressBar1.Text = "出错"; // 显示“出错”标签文本
                progressBar1.Style = ProgressBarStyle.Marquee; // 停止进度条动画(仅适用于WinForms)
                MessageBox.Show(e.Error.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); // 显示错误消息框(仅适用于WinForms)
            }
            else // 如果任务成功完成,隐藏进度条(仅适用于WinForms)
            {
                progressBar1.Visible = false; // 隐藏进度条(仅适用于WinForms)
            }
        }
    }
}

4、现在,我们可以在窗体的按钮点击事件中调用StartProgressBar和StopProgressBar方法来启动和停止进度条动画,可以在一个按钮的Click事件中添加以下代码:

private void btnStart_Click(object sender, EventArgs e)
{
    StartProgressBar(); // 启动进度条动画(仅适用于WinForms)
}

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/191842.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-01-31 00:52
下一篇 2024-01-31 00:54

相关推荐

  • Winform开发框架的源码究竟包含哪些关键要素?

    WinForms开发框架源码通常包含在.NET Framework的源代码中,可以在GitHub上找到。

    2024-10-02
    035
  • winform怎么判断文本框内的字符数量

    在WinForm中,可以使用TextBox控件的TextLength属性来判断文本框内的字符数量,以下是详细的步骤和小标题:1. 创建WinForm项目创建一个WinForm项目,然后在窗体上添加一个TextBox控件和一个Button控件。2. 为Button添加点击事件处理程序双击Button控件,为其添加……

    2024-05-19
    073
  • WinForm中怎么使用日期时间选择器控件

    如何在WinForm中使用日期时间选择器控件在WinForm应用程序中,日期时间选择器(DateTimePicker)是一个常用的用户界面控件,允许用户以日历的形式选择日期和/或时间,以下是如何在WinForm中使用日期时间选择器控件的详细步骤:1. 添加DateTimePicker控件到窗体你需要将DateT……

    2024-05-19
    01.1K
  • WinForm窗体中怎么添加一个列表框控件

    在WinForm窗体中添加一个列表框控件的步骤如下:1、打开Visual Studio,创建一个新的Windows Forms应用程序项目。2、在解决方案资源管理器中,双击“Form1.cs”以打开窗体设计器。3、在工具箱中,找到“ListBox”控件,如果找不到,可以点击工具箱右上角的“选择项卡”,然后选择……

    2024-05-19
    0287

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入