我用了backgroundworker控件 在dowork事件中循环得到一个控件,然后将这个控件加入到窗体中的一个PANEL中,怎么将这控件在循环当中加入到加入到窗体当中呢?
解决方案 »
- 初学者,三层架构的简单问题 请大家帮忙解答
- c#递归读取树状表生成json字符串用于extjs树上 ....(如无满意贴就散分)...
- 数据库连接字符串问题
- 赋值造成‘类、结构或接口成员声明中的标记“=”无效’的问题
- msdn的问题
- c#.net新建windows应用程序项目执行后的窗体可以生成.exe文件么?
- 如何才能加快捕获异常的速度!
- localhost:3448/(F(O853n3ESeAGL6RinB0Op0IYbBHdBFkFCFbdbYr3L3Y
- 软件写好后该不该写上程序编写人员的名字????
- 关于DataList的数据更新?
- 如果我想做一个Excel模板 并生成 我要怎么做
- Infragistics的UltraExplorBar控件,哪儿有单个Items的事件啊?
{
// 定义delegate以实现添加control
public delegate void AddControlsHandler(); public Form1()
{
InitializeComponent(); m_BackgroundWorker = new BackgroundWorker();
m_BackgroundWorker.DoWork += new DoWorkEventHandler(m_BackgroundWorker_DoWork);
} void m_BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
//调用form的BeginInvoke方法来调用一个delegate帮助实现添加控件
this.BeginInvoke(new AddControlsHandler(HandleAddControls));
} void HandleAddControls()
{
this.panel1.Controls.Add(new Button());
} private BackgroundWorker m_BackgroundWorker; // 单击按钮以触发DoWork
private void button1_Click(object sender, EventArgs e)
{
m_BackgroundWorker.RunWorkerAsync();
}
}
worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(bg_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(bg_ProgressChanged); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);
private void bg_DoWork(object sender, DoWorkEventArgs e)
{
foreach (//你的循环)
{
control cl = ...// 得到你的控件
((BackgroundWorker)sender).ReportProgres(count ,cl); //控件传递到 bg_ProgressChanged事件
}
}
void bg_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//addcontrol 这里可以操作UI上的控件. }