作者:ian | 来源:互联网 | 2023-09-02 15:41
现在有一个封装好了的数据处理函数 DataExcu() 处理数据需要5分钟左右
因此想弄个进度条
如下:
1.Form1中设置DataExcu()函数的参数后 点击按钮“开始处理” 然后弹出一个新的窗体Form2
Form2带进度条 当Form1数据处理完成时候 From2显示完成 进度条隐藏 (小弟看了多线程的例子 晕乎乎的)
本人小菜 谢谢各位了先
27 个解决方案
可以的,本人以前做过这样的例子。
点击Form1中的按钮弹出Form2,在Form2中启动处理事件,同时在Form2中显示进度,等Form2中处理完之后关闭Form2。
至于在Form2控制进度条不建议使用多线程,因为涉及到UI并发控制问题,可以使用BackGroundworker类。至于这个类的用法,可参加本人博客:
.net 2.0 BackgroundWorker类详细用法
System.ComponentModel.BackgroundWorker bkgWorker = new BackgroundWorker();
bkgWorker.ProgressChanged += new ProgressChangedEventHandler(bkgWorker_ProgressChanged);
bkgWorker.WorkerReportsProgress = true;
private void bkgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
进度条psBarAll.Value = e.ProgressPercentage+1;
}
private void bkgWorker_DoWork(object sender, DoWorkEventArgs e)
{
做具体的事情
}
private void button1_Click(object sender, EventArgs e)
{
new System.Threading.Thread(new System.Threading.ThreadStart(Start)).Start();
}
public void Start()
{
}
void A(long total, long current)
{
if (this.InvokeRequired)
{
//调用方法
}
else
{
this.progressBar1.Maximum = (int)total;
this.progressBar1.Value = (int)current;
}
}
路过,学习.
好像进度条这个问题不止C#处理不方便,其他语言也不怎么地.
只要 控件做个计数的变量时候的改变,然后在新建的进度条窗口去处理都可以了吧