求winform 加载窗体时弹出另一个窗体并显示进度条的源码

比如点击A窗体上的一个按钮执行一些大数据量的操作的同时,弹出一个B窗体显示进度条,等A窗体上的大数据操作完成后。同时关闭B窗体,要求要测试可以运行的。全部代码。谢谢!... 比如 点击A窗体上的一个按钮 执行一些大数据量的操作的同时,弹出一个B窗体显示进度条,等A窗体上的大数据操作完成后。同时关闭B窗体,要求要测试可以运行的。全部代码。谢谢! 展开
 我来答
匿名用户
2011-07-06
展开全部
//frmA: 源窗体
//------------------------------------------
//引用
using System.Threading;
public frmA()
{
InitializeComponent();

worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
}

/// <summary>
/// 异步 开始事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
//需要执行的代码
}

/// <summary>
/// 事件: 异步执行完成后
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("执行完成。", "run", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

//点击一个按钮后开始执行
private void btnA_Click(object sender, EventArgs e)
{
//代码
......

//异步执行开始
worker.RunWorkerAsync(tableName);

//显示进度窗体
frmB frm = new frmB(this.worker);
frm.StartPosition = FormStartPosition.CenterScreen;
frm.ShowDialog(this);
}

frmB:
//里面放了一个loading.gif图片显示进度
------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace test
{
public partial class frmB: Form
{
public frmB(BackgroundWorker worker)
{
InitializeComponent();
worker.ProgressChanged +=new ProgressChangedEventHandler(worker_ProgressChanged);
worker.RunWorkerCompleted +=new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
}

void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Close();
}

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//lblStatus.Text = "";
}

//工作完成后执行的事件
public void OnProcessCompleted(object sender, EventArgs e)
{
this.Close();
}

}
另外,站长团上有产品团购,便宜有保证
apu510064
2011-06-28 · TA获得超过964个赞
知道小有建树答主
回答量:1634
采纳率:55%
帮助的人:928万
展开全部
大致做法:
private void ShowWaitting()
{
//frmWaitting相当于你题目中说的B窗口
frmWaitting tt = new frmWaitting();//这个是显示滚动条的窗口,里面做好了Timer和滚动条,
tt.ShowDialog();
tt.Dispose();
}
private void RefreshUI()//这是刷新界面,即你题目中的点击A窗口的按钮
{
Thread tGetData = new Thread(new ThreadStart(ShowWaitting));
tGetData.Name = "Waitting";
tGetData.Start();
//这里就是你要做的数据操作
//你的操作
//数据操作完毕
tGetData.Abort();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在双桥古镇感受晴天的喜羊羊
2011-06-28 · 超过25用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:67万
展开全部
进度条可以多次循环还是只能循环一次呀?多次循环就好办了。之间在B里添加属性(滚动条的value),用时间控件递加,A运行完后,再在A里面把B关了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bdb9803
2011-06-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
多线程 + New Form Show + progressbar,这几种技术的组合,现成代码是没有的,你需要在网上分别找些例子阅读。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式