我正在做一个项目,我需要在另一个表单中运行一个表单,例如我有两个表单类:form1 和 form2
在表格1中:
public void func1()
{
form2 f=new form2();
f.show();
Thread.sleep(2000);
}
当我运行它时,f
这是 form2 的一个实例挂起,直到线程在 2 秒后唤醒。
我尝试使用另一个线程,但它不能正常工作。我知道我应该使用Invoke
,BeginInvoke()
但我不知道如何在这里使用它们。我是 Delegate 和 Invoke 的新手,我读的越多,我就越困惑!请帮我。
Edit1(更多信息) form1 是主表单,form2 是一个简单的表单,在 form1 中有一个按钮,我创建并显示 form2,如下所示:
public partial class Form1 : Form
{
public delegate void showdel();
public Form2 f;
public Form1()
{
InitializeComponent();
f = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(sstart);
t.Start();
Thread.Sleep(3000);
}
public void sstart()
{
f.Show();
}
}
但是当我运行这段代码时,form2 会出现片刻,然后很快就消失了。即使我为 sstart() 尝试此代码,它的工作原理也是一样的:
public void sstart()
{
if (f.InvokeRequired == true)
f.BeginInvoke(new showdel(sstart));
else
f.Show();
}
我还有挂起问题。但进一步我想控制form1中的form2,例如更改表单2的标题。不幸的是,我没有太多关于backgroundworker及其工作原理的信息?有人对此有任何参考吗?