2010-06-23 28 views
0

我遇到了一些我正在處理的WinForm應用程序的嚴重問題。
目前,我使用Form1.ShowDialog();顯示錶單。此代碼包含在後臺工作人員中,用於查找數據庫中的更改。使用Form1.ShowDialog();即使數據庫有多個更改,也只允許一次打開一個表單。如果我的數據庫中有多個更改,我想要發生的是多個表單一次打開。顯示多個相同形式的實例?

當我使用Form1.Show(),應用程序爆炸。出於某種原因,Show()方法會使窗體無法正確顯示(表單中的所有元素均已丟失)。

有什麼我可以做的,使我的代碼按我想要的方式工作?

編輯:這裏是一個代碼片段

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

發佈代碼的相關部分,以便我可以分析它。 – 2010-06-23 15:47:46

+0

...以及應用程序「爆炸」(例外消息等)的一些細節。 – 2010-06-23 15:49:11

+0

添加了代碼片段, 當show();被使用時,foreach循環將繼續循環(即使結果中只有一行),並顯示缺少其元素的表單。 – sooprise 2010-06-23 15:53:28

回答

1

先看看,我可以告訴你:

  • 的ShowDialog無法工作,你打算的方式:這個非常方法使主人在關閉對話框之前不活動。在你的情況下,循環將在第一個showdialog中暫停,然後當你關閉表單,打開一個新表單時繼續,直到循環結束。
  • 至於「顯示」問題,創建空表單,我需要更多的信息。剩下的代碼和你得到的異常。從我的頭頂
1

兩點:

1)要打開一個以上的形式,使用非模態(模態的)方法(我認爲 的show()方法)。見例如http://msdn.microsoft.com/en-us/library/39wcs2dh.aspx

2)我不知道你可以從非UI線程調用UI相關的方法。您可能希望從工作線程向您的UI線程發送事件,並且UI線程將調用顯示方法

相關問題