winform中显示进度条 在winform程序中如何显示某个方法执行进度的进度条(也可以不显示进度的百分比,能显示当然最好)?因为执行某些方法时带有比较复杂的业务逻辑,对数据库的操作也比较慢,所有想在执行该方法时给用户界面显示一个进度,当该方法执行完毕后再关闭该进度条. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2005 BackgroundWorker 2003 ProgressBar 执行的方法最好是循环的~~~~那么在类里面定义一个属性,用来记录方法的进度,比如属性T,在方法里面调用(递增)T..属性T被定义为每次为T赋值的话就调用一次自定义的方法OnTChanged()~~然后再暴露一个事件委托TChanged给外部,例如进度条使用~~~ int _t=0;//定义一个委托数据类型//定义一个委托类型//声明一个该委托类型事件TChanged;public int T{ get{return _t;} set{ _t=value; OnTChanged(); }}void OnTChanged(){ //创建一个时间产生的数据类型e,将T值赋给e if(TChanged!=null){ TChaned(this,e);}};//---------------在类的外部根据事件去搞进度条~~~` 方法不是循环的,主要是由于操作数据库比较慢.此时可以不要精确的进度显示,只要显示一个窗口,提示系统正在运行中即可,就像windows系统启动时给出的"正在启动..."一样. BackgroundWorker实例http://idior.cnblogs.com/archive/2005/08/18/217796.html google里搜一下,要学会自己找帮助。 delegate void myDelegate(int i, bool flag);public void ShowMessage(int i, bool flag){ if(flag == true) { this.textBox1.Text = i.ToString(); this.progressBar1.Value = i; } else{ this.textBox2.Text = i.ToString(); } }public void MyEvent(){ mutex.WaitOne(); for(int i=0; i<=100; i++) { Thread.Sleep(1000); this.BeginInvoke(mydelegate, new Object[] {i, true}); } mutex.ReleaseMutex();}private void button1_Click(object sender, System.EventArgs e) { Thread myThread = null; mydelegate = new myDelegate(ShowMessage); myThread = new Thread(new ThreadStart(MyEvent)); myThread.IsBackground = true; myThread.Start();} 怎么在主窗体运行的时候加载一个自定义用户控件 关于局部变量DataSet对象是否有必要调用Dispose方法? 怎样用代码修改Linq的配置文件 关于,继承一个类去实现安全问题 求助一个正则表达式 magicajax一个难解问题,请高手指教 C#如何接收邮件中的附件!!!急,在线等了!!(高分,不够在给) ListView 如何取子项目 如何实现CheckBox中选中后框内的颜色变色 超行动力和控制力的组合:C# + 汇编 各位杂样 自己做一个类似与 Dos 的copy功能 返回一个随机数
2003 ProgressBar
比如属性T,在方法里面调用(递增)T..
属性T被定义为每次为T赋值的话就调用一次自定义的方法OnTChanged()~~
然后再暴露一个事件委托TChanged给外部,例如进度条使用~~~
//定义一个委托数据类型
//定义一个委托类型
//声明一个该委托类型事件TChanged;
public int T{
get{return _t;}
set{
_t=value;
OnTChanged();
}
}
void OnTChanged(){
//创建一个时间产生的数据类型e,将T值赋给e
if(TChanged!=null){
TChaned(this,e);
}
};//---------------
在类的外部根据事件去搞进度条~~~`
此时可以不要精确的进度显示,只要显示一个窗口,提示系统正在运行中即可,就像windows系统启动时给出的"正在启动..."一样.
http://idior.cnblogs.com/archive/2005/08/18/217796.html
public void ShowMessage(int i, bool flag){
if(flag == true)
{
this.textBox1.Text = i.ToString();
this.progressBar1.Value = i;
}
else{
this.textBox2.Text = i.ToString();
}
}public void MyEvent(){
mutex.WaitOne();
for(int i=0; i<=100; i++)
{
Thread.Sleep(1000);
this.BeginInvoke(mydelegate, new Object[] {i, true});
}
mutex.ReleaseMutex();
}private void button1_Click(object sender, System.EventArgs e)
{
Thread myThread = null;
mydelegate = new myDelegate(ShowMessage);
myThread = new Thread(new ThreadStart(MyEvent));
myThread.IsBackground = true;
myThread.Start();
}