今天写一个动态增加tabpage的程序,在程序中使用了异步加载tabpage的模式,源代码:
delegate void AddTabPageMethmod(TabPage page);
private void AddTabPage(TabPage page)
{
this.tabControl1.TabPages.Add(page);
}
在线程中处理的时候这样调用:
AddTabPageMethmod methAddPage = new AddTabPageMethmod (AddTabPage);
TabPage page = new TabPage();
page.Name = "TabPage";
page.Text = "AddNewPage";
methAddPage.BeginInvok(page,null,null);
但是在实际运行中,执行到 this.tabControl1.TabPages.Add(page);时程序就没有任何响应,
如果不使用异步委托,直接调用AddTabPage(page);也不成功,百思不得其解
后来看了一些资料,原来使用的线程不对,要在窗体的主线程上执行才能正确执行:
this.BeginInvok(methAddPage,new object[]{page});
这里,this指主窗体.
搞定.
评论