2011-03-31 51 views
1

我有一个GUI,允许用户添加tabpages到选项卡控件。每次用户添加一个选项卡时,用户控件都会放在新选项卡上。用户控件上有一个后台工作者以及其他几个控件。我的问题是:我可以访问特定于tabpage的背景工作吗?换句话说,我能告诉程序使用tab索引0上的backgroundworker来运行一个进程,然后告诉后台工作人员在tab索引1上运行一个不同的进程吗?如何在tabpage上的用户控件上引用backgroundworker?

+0

相当奇怪,但我想你可以将BGW公开为用户控件的属性。 – 2011-03-31 16:35:10

回答

0

也许你可以有BackgroundWorkers列表,每次你在C#中添加创建一个新的工作是这样的一个标签

public class Foo : Form{ 
List<BackgroundWorkers> bgs; 

...... 
void AddNewTab(DoWorkEventHandler bw_DoWork, RunWorkerCompletedEventHandler bw_RunWorkerCompleted, ProgressChangedEventHandler bw_ProgressChanged) 
{ 
    //bgs was initialized in the ctr 
    var bw = new BackgroundWorker(); 
    bw.WorkerReportsProgress = true; 
    bw.WorkerSupportsCancellation = true; ; 
    bw.DoWork += new DoWorkEventHandler(bw_DoWork); 
    bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); 
    bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); 

    bgs.Add(bw) 
} 

..... 
void ExecuteBackgroundWorker(int tabindex) 
{ 
    bgs[tabindex].RunWorkerAsync(); 
} 

void ExecuteBackgroundWorkerTask(int tabindex, DoWorkEventHandler bw_DoWork) 
{ 
    bgs[tabindex] += new DoWorkEventHandler(bw_DoWork); 
    bgs[tabindex].RunWorkerAsync(); 

} 

} 

类似的东西.....但翻译成vb.net。 ...

+0

是的,也许这是一个更好的建议。 – user686059 2011-03-31 17:25:50

+0

:) ~~我必须输入至少15个字符~~ – jjchiw 2011-03-31 19:08:26

相关问题