我想在一个工程的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。”
}

解决方案 »

  1.   

    都已经提示的很明白了,你需要用form.showdialog();
      

  2.   

    Form2 testDialog = new Form2();
    Form1 form1 = new Form1();
    DialogResult dia=testDialog.ShowDialog(form1);
    form1.ShowDialog();
    testDialog.Show();
    参考
      

  3.   

    不知道你了解XNA吗,XNA里有个Game1相当于Form,但却没有Form的Application.Run,show,showDialog这些,就只有game.Run();我说的Form1就是指Game1的。
    实际上我原先用XNA做项目为了和Form结合,就用了转绘的方式,先启动Game1,在由Game1启动Form2,现在和另一个工程集成后就没法调用了,用game.Run老是提示线程问题
      

  4.   

    我的里面Game1相当于你写的Form2,但Game1 game = new Game1;无法应用ShowDialog();
      

  5.   

    你可以2种方式
    1.直接显示,利用当前线程的消息泵。
    Form1 frm = new Form1();
    frm.Show();
    2.启动线程创建新的消息泵
    new Thread((ThreadStart)delegate
    {
        Application.Run(new Form1());
    }).Start();XNA中有:Application.Run,show,showDialog
    只是Main函数不同。以上写法均在XNA项目中测试通过。
      

  6.   

    添加依赖,直接用
    Form A=new Form();
    A.ShowDialog();