显示相同表单的多个实例?

时间:2010-06-23 15:44:55

标签: c# winforms

我正在处理一些我正在研究的WinForm应用程序的严重问题 目前,我正在使用Form1.ShowDialog();显示表格。此代码包含在后台工作程序中,后者查找数据库中的更改。使用Form1.ShowDialog();即使数据库有多处更改,也只允许一次打开1个表单。我想要发生的是,如果我的数据库中有多个更改,则可以立即打开多个表单。

当我使用Form1.Show();时,应用程序会爆炸。由于某种原因,Show()方法使表单无法正确显示(表单中的所有元素都缺失)。

我能做些什么让我的代码按照我想要的方式工作?

编辑:这是一段代码片段

//result is a linq result
foreach (var row in result)
{
Form1 Form = new Form1();
Form.ShowDialog();
}

2 个答案:

答案 0 :(得分:1)

第一次看后,我可以告诉你:

  • Showdialog无法按照您的意图运行:这种方法使所有者处于非活动状态,直到对话框关闭。在你的情况下,循环将在第一个showdialog暂停,然后在你关闭表单时重新开始,打开一个新的,依此类推,直到循环结束。
  • 至于“show”问题,创建空表单,我需要更多信息。其余的代码和你得到的例外。

答案 1 :(得分:1)

我头顶两点:

1)要打开多个表单,请使用非模态(无模式)方法(我认为 show()方法)。例如,请参阅http://msdn.microsoft.com/en-us/library/39wcs2dh.aspx

2)我不确定您是否可以从非UI线程调用UI相关方法。您可能希望从工作线程向UI线程发送事件,UI线程将调用show方法