我在 主线程Form1中new 了一个 静态按钮 然后开了两个子线程 分别打开 Form2 和Form3 我想要在这两个线程中的窗体里面加载 Form1中的静态按钮 即 方法 TabPage.Controls.Add(Control )。想要达到的效果是 :只有一个按钮 无论是Form2还是Form3 要加载按钮时 都是加载的Form1中的那一个静态按钮,
代码如下:加载控件时 都是用的Invoke 方法,但是 还是报错 “”
Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bt.Text = "123";
}
static Button bt = new Button();
Form2 f2 = new Form2();
Form3 f3 = new Form3();
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(
() =>
{
f2.eve += new EventHandler(f_eve);
f2.ShowDialog();
}
)).Start();
}
private void button2_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(
() =>
{
f3.eve += new EventHandler(f_eve);
f3.ShowDialog();
}
)).Start();
}
void f_eve(object sender, EventArgs e)
{
TabPage t = (TabPage)sender;
t.Invoke(new EventHandler(delegate
{
t.Controls.Add(bt);
}));
}
}Form2 和Form3 一样
代码如下:加载控件时 都是用的Invoke 方法,但是 还是报错 “”
Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bt.Text = "123";
}
static Button bt = new Button();
Form2 f2 = new Form2();
Form3 f3 = new Form3();
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(
() =>
{
f2.eve += new EventHandler(f_eve);
f2.ShowDialog();
}
)).Start();
}
private void button2_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(
() =>
{
f3.eve += new EventHandler(f_eve);
f3.ShowDialog();
}
)).Start();
}
void f_eve(object sender, EventArgs e)
{
TabPage t = (TabPage)sender;
t.Invoke(new EventHandler(delegate
{
t.Controls.Add(bt);
}));
}
}Form2 和Form3 一样
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货