//实现进度条弹窗:
//手动新建一个.cs设计窗口,界面内加入一个进度条,一个停止按钮,一个百分比标签控件
//代码文件如下:
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Forms;
using DevExpress.Utils.WXPaint;
using PCSTools;
namespace PCSTools
{
public partial class ProgressBarForm : Form
{
private System.Windows.Forms.Timer timer;
public ProgressBarForm()
{
InitializeComponent();
this.progressBar.Maximum = 100;
this.progressBar.Value = 0;
timer = new System.Windows.Forms.Timer();
timer.Interval = 100; // 定时器间隔时间,单位为毫秒 (延迟检查进度条有没有到达100%的定时时长,可以等待进度条显示完全)
timer.Tick += Timer_Tick;
timer.Start(); //启动定时器检测进度到达100%后,自动怕关闭窗口
}
private async void Timer_Tick(object sender, EventArgs e)
{
// 继续执行其他操作
if (progressBar.Value >= progressBar.Maximum)
{
await Task.Delay(10);
//确保进度条可以更新到100%,再关闭。
//注:如果不加中这条异步延时语句,如果要进度条更新到100%时自动关闭窗口,
//会因为先判断到进度更新值到达100%,但是进度条界面还没更新完毕,窗口就被提前关闭了。
//延时时间不重要,只是这个异步操作可以解决界面更新慢的问题。
Thread.Sleep(2000);//延时显示2s后再关闭窗口
this.Close();
timer.Stop();
timer.Dispose();
}
}
// 方法用于更新进度条的值
public void UpdateProgress(int progress)
{
if (progress <= progressBar.Maximum)
{
progressBar.Value = progress;
label_percent.Text = progress + "%";
}
}
}
}
//调用的主窗口代码:
public ProgressBarForm progressForm;//创建进度窗口变量
//弹出进度条窗口
progressForm = new ProgressBarForm();
progressForm.StartPosition = FormStartPosition.CenterScreen;//设置进度条弹窗在屏幕居中显示
progressForm.Show(); // 显示进度窗口
//其他函数内部更新进度条
for (int l = 0; l < 700; l++)
{
if((i*700+l)%112 == 0)
{
Pro_percent++;
if (progressForm != null && !progressForm.IsDisposed)
{
// 进度条窗口可以被调用
progressForm.UpdateProgress(Pro_percent);
}
if (100 == Pro_percent)
{
Pro_percent = 0;
}
}
}
C#实现一个进度条弹窗,进度到达100%后,自动关闭窗口
于 2024-05-30 16:40:07 首次发布