进度条简单示例,其实不算是自己的东西了,就是留个学习记录吧
using System.Windows.Forms;
//第一步 添加引用
using System.Threading;
using System.IO;
namespace progressbar
{
public partial class Form1:From
{
public Form1()
{
InitializeComponent();
}
//第二步 定义委托更新进度条的值
private delegate void SetPos(int ipos);
//第三步 进度条值更新函数
private void SetTextMessage(int ipos)
{
if (this.InvokeRequired)
{
SetPos setPos = new SetPos(SetTextMessage);
//主线程外修改主线程时使用this.Invoke
this.Invoke(setPos, new object[] { ipos });
}
else
{
this.label1.Text = ipos.ToString() + @"/100";
this.pgb.Value = Convert.ToInt32(ipos);
}
}
//进度条的使用及开发函数
private void button1_Click(object sender, EventArgs e)
{
Thread fThread = new Thread(new ThreadStart(SleepT));
//开辟一个新线程
fThread.Start();
}
//提示信息
public delegate void showMsg(string msg);
public void msgBox(string msg)
{
if (this.InvokeRequired)
{
showMsg show_msg = new showMsg(msgBox);
this.Invoke(show_msg, new object[] { msg });
}
else
{
MessageBox.Show(msg);
}
}
private void SleepT()
{
for (int i = 0; i < 200; i++)
{
//单纯的延时
Thread.Sleep(100);
SetTextMessage(100 * i / 200);
}
SetTextMessage(100);
msgBox("success");
}
}
}