我想在一个工程的Form上点击button,启动另一个工程中的Form,老是提示线程的出现问题。具体如下
在A工程中有两个Form, 当A工程启动时,Form2 form = new Form2();即这两个Form是同时启动的,但看到的是form,Form1是隐藏的。
将A工程加载到B工程里,需要点击B工程的Button时调用F窗体,怎么做?private void button1_Click(object sender, EventArgs e)
{
Form1 form = new Form1(new form());
Application.Run();//一旦运行就提示“在单线程上开始另一个消息循环是无效操作,请改用Form。ShowDialog。”
}
在A工程中有两个Form, 当A工程启动时,Form2 form = new Form2();即这两个Form是同时启动的,但看到的是form,Form1是隐藏的。
将A工程加载到B工程里,需要点击B工程的Button时调用F窗体,怎么做?private void button1_Click(object sender, EventArgs e)
{
Form1 form = new Form1(new form());
Application.Run();//一旦运行就提示“在单线程上开始另一个消息循环是无效操作,请改用Form。ShowDialog。”
}
Form1 form1 = new Form1();
DialogResult dia=testDialog.ShowDialog(form1);
form1.ShowDialog();
testDialog.Show();
参考
实际上我原先用XNA做项目为了和Form结合,就用了转绘的方式,先启动Game1,在由Game1启动Form2,现在和另一个工程集成后就没法调用了,用game.Run老是提示线程问题
1.直接显示,利用当前线程的消息泵。
Form1 frm = new Form1();
frm.Show();
2.启动线程创建新的消息泵
new Thread((ThreadStart)delegate
{
Application.Run(new Form1());
}).Start();XNA中有:Application.Run,show,showDialog
只是Main函数不同。以上写法均在XNA项目中测试通过。
Form A=new Form();
A.ShowDialog();