Winform打造进度条窗口代码,还有取消按钮呢
Winform打造进度条窗口代码,还有取消按钮呢
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Test
{
public class MyProgress
{
private int MaxNum;
Form progressForm=null;
ProgressBar progressBar1=null;
bool Stop=false;
Label label1;
public bool ProgressStep(int step)
{
if (Stop)
{
this.Dispose();
return true;
}
if (progressBar1.Value > progressBar1.Maximum)
{
this.Dispose();
return true;
}
progressBar1.Value+= step;
label1.Text = "目前完成:" + (progressBar1.Value * 100 / progressBar1.Maximum) + "%";
Application.DoEvents();
return false;
}
private void btn_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确定终止吗", "终止", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
Stop = false;
else
Stop = true;
}
public MyProgress(int Max, String Caption, bool IsCancel)//最大值和标题
{
progressForm = new Form();
progressForm.MinimizeBox = false;
progressForm.MaximizeBox = false;
progressForm.StartPosition = FormStartPosition.CenterScreen;
progressForm.Width = 326+19;
progressForm.Height = 96+19+20;
progressForm.Text= Caption;
progressForm.TopMost = true;//设置窗口在上边
label1 = new Label();
label1.Left = 9;
label1.Top = 15;
label1.Parent = progressForm;
progressBar1 = new ProgressBar();
progressBar1.Maximum = Max;
MaxNum = Max;
progressBar1.Left = 9;
progressBar1.Top = 25+15;
progressBar1.Width = 310;
progressBar1.Parent = progressForm;
progressBar1.Value = 0;
if (IsCancel)
{
Button btnCancel = new Button();
btnCancel.Text = "取消";
btnCancel.Left = 240;
btnCancel.Top = 54+20;
btnCancel.Parent = progressForm;
btnCancel.Click += new System.EventHandler(this.btn_Click);
}
progressForm.Show();
}
public void Dispose()
{
if (progressForm != null)
{
progressBar1.Dispose();
progressForm.Dispose();
}
}
}
}
----------------------------------
//调用测试 进度条窗口
private void button2_Click(object sender, EventArgs e)
{
MyProgress myProgress = new MyProgress(100, "进度条", true);
try
{
for (int i = 0; i < 100; i++)
{
if (myProgress.ProgressStep(1)) return;
Application.DoEvents();//让系统在百忙中抽空刷新
Thread.Sleep(100);
}
}
finally
{
myProgress.Dispose();
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥