C# 窗体进度条
一。通过计时控制进度条
public processBarForm(int sec)//计时 单位0.1s --------窗体构造函数,传入需要定时间的参数
通过定时器计时每0.1秒计数一次。 记得在窗体放入定时器。定时器默认时间间隔100ms
label显示百分比
public partial class processBarForm : Form
{
int timeover = 0;
int count = 0;
//------------------方式一 --------------------------
public processBarForm(int sec)//计时 单位0.1s
{
InitializeComponent();
timeover = sec;
timer1.Enabled = true;//开启定时器
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
if (timeover < count) this.Close();
else
{
sendProgressBar.Value = (count * 100) / (timeover);
label1.Text = ((count * 100) / (timeover )).ToString() + "%";
}
}
}
使用的地方:
processBarForm processbarForm = new processBarForm(30);//创建窗体进度条 ----时长3s
processbarForm.StartPosition = FormStartPosition.CenterScreen;//居中
processbarForm.ShowDialog();
效果
二。通过最大值,最小值控制进度条
//-------------------------方式二--------------------------
public processBarForm(int _Minimun, int _Maximum) //计范围
{
InitializeComponent();
sendProgressBar.Maximum = _Maximum;//设置范围最大值
sendProgressBar.Value = sendProgressBar.Minimum = _Minimun;//初始值设置范围最小值
}
public void setPos(int value)
{
if (value < sendProgressBar.Maximum)
{
sendProgressBar.Value = value;//设置进度值
label1.Text = (value * 100 / sendProgressBar.Maximum).ToString() + "%";
}
else {
this.Close();
}
Application.DoEvents();//重点,必须加上,否则父子窗体都假死
}
调用初始化:
processBarForm processbarForm = new processBarForm(0, (int)(BSum));//进度条范围 BSum发包数量
processbarForm.StartPosition = FormStartPosition.CenterScreen;
processbarForm.Show();//不会阻塞主线程
processbarForm.Activate();
线程里改变百分比: processbarForm.setPos(BCount);//设置进度条 BCount发送第几包