我有一个只包含ZedGraph的用户控件。
我试图为这个名为additself的用户控件编写一个方法,它将自己添加到主窗体的标签页中。
TabPage newpage = new TabPage();
newpage.Controls.Add(this.zedGraphControl1);
(form1.Controls["tableLayoutPanel1"].Controls["tabControl1"] as TabControl).TabPages.Add(newpage);
因为它是一个跨线程操作,所以会出现错误,我通过添加
来修复它TabPage newpage = new TabPage();
newpage.Controls.Add(this.zedGraphControl1);
form1.Invoke((MethodInvoker)delegate
{
(form1.Controls["tableLayoutPanel1"].Controls["tabControl1"] as TabControl).TabPages.Add(newpage);
});
出于某种原因,它仍然会显示一条错误消息,指出zedgraph是从创建它的线程中访问的。
我该如何解决这个问题?
答案 0 :(得分:1)
您仍然在另一个线程上创建控件;您只需将代码插入到表单中的UI线程中。将以TabPage newpage = new TabPage();
开头的所有内容移至Invoke()
。