2010-01-29 38 views
1

我有以下情況:ShowDialog(),而另一個窗體通過ShowDialog()也是可見的,關閉兩者?

  1. 這將打開WelcomeFormShowDialogParentForm
  2. WelcomeForm包含當用戶點擊OKNewProjectFormShowDialog
  3. 打開NewProjectForm按鈕,創建一個新的項目,這兩種形式都關閉(良好)
  4. 當用戶點擊CANCELNewProjectForm,這兩種形式是封閉的(可以理解的行爲,但不是渴望的)。

我有點懷疑這是與DialogResult(實際上DialogResult.NoneCANCELNewProjectForm

我怎樣才能不用兩種形式關閉上述情況?

編輯
代碼用於打開NewProjectForm

ProjectNew projectNew = new ProjectNew(); 
projectNew.StartPosition = FormStartPosition.CenterParent; 
projectNew.ShowDialog(this); 

代碼用於打開WelcomeForm

Welcome welcome = new Welcome(); 
welcome.StartPosition = FormStartPosition.CenterParent; 
welcome.ShowDialog(this); 

注:NewProjectForm通過Welcome打開,但通過ParentForm

編輯2
奇怪的東西;我創建了一個具有相同代碼/情況的新項目,它不會再現此行爲...

+1

你可以分享顯示'NewProjectForm'的代碼嗎? – 2010-01-29 11:14:57

+0

在NewProjectForm關閉時,給定代碼示例時,WelcomeForm應該關閉,這似乎很奇怪。這是在按鈕點擊事件中完成的。 – 2010-01-29 11:20:59

+0

你需要粘貼更多的代碼 - 理想情況下,這兩種形式的整個類。 – Grzenio 2010-01-29 11:25:03

回答

0

刪除了幾個按鈕,添加了一個新的:解決了。
所以我認爲它應該是一個DialogResult莫名其妙的東西。

+1

我懷疑這些按鈕的DialogResult屬性設置爲None以外的值。這可以解釋爲什麼這解決了這個問題。看到我的答案。 – 2011-07-19 16:12:53

1

這是一個長期存在的問題,我已經遇到過幾次了。 This文章有更多的討論,以及一個解決方法。

它已被固定在.net 3.5 SP1(我不能再安裝SP1後再現它),雖然我沒有看到任何官方的話,它已被確定修復。

+0

我已經看過那篇文章,並通過設置DialogResult = DialogResult.None嘗試瞭解決方法,但這也沒有幫助。 – MysticEarth 2010-01-29 11:33:16

+0

我也無法重現該行爲(在.NET 3.5 SP1和.NET 4 Beta 2上都測試過) – 2010-01-29 11:48:04

+0

解決方法爲我解決了這個問題!一行代碼。 – Sire 2011-03-31 13:44:43

1

我被這個咬,因爲我已經複製/粘貼從另一種形式,沒有意識到按鈕有一個它的DialogResult屬性設置爲DialogResult.Cancel一些按鈕。

單擊時,這是設置包含窗體的DialogResult,使其關閉。

將其重置爲DialogResult.None修復了該問題。

因此,檢查所有模態對話框上的DialogResult屬性。

相關問題