在這個WinForms項目中,我有一個彈出2秒的特定信息窗體(InfoForm
),然後消失。我這樣做的方式是通過調用消失的模態形式之謎
infoForm.Show();
,然後裏面InfoForm
我有一個Timer
2秒後蜱,並呼籲Close()
。
現在,有時候還有另一種形式ErrorForm
我需要以模態方式顯示(使用errorForm.ShowDialog()
),通知用戶發生了錯誤,並且他們需要單擊確定,然後才能繼續。這可能發生在InfoForm
正在打開和關閉時,並且一個不應該影響另一個。
但它的確如此。
我有這麼走得更遠,把一個斷點調用ShowDialog
,如果InfoForm
是在我遇到斷點時打開,然後當我點擊「單步跳過」,而不是彈出的ErrorForm
並等待我點擊「確定」,調試器會跳過該行並已經在下一行,就好像表單從未打開過一樣。同時在後臺InfoForm
已關閉,因此如果我將執行點重置爲調用ErrorForm.ShowDialog()
,然後「跳過」,則表單將按預期顯示,並等待我單擊「確定」,然後再轉到下一步聲明。
刪除斷點和寫入調試日誌證實了我的懷疑,它的關閉,是造成我ErrorForm
是不合時宜的InfoForm
收盤:
螺紋09 - 2011/12/14 16時39分: 30.574 - 顯示信息的形式
螺紋09 - 16 2011/12/14:39:31.300 - ErrorForm.ShowDialog
之前螺紋09 - 16 2011/12/14:39:32.584 - 計時器滴答
螺紋09 - 16 2011/12/14:39:32.585 - 信息形成閉合
螺紋09 - 16 2011/12/14:39:32.593 - 錯誤形式收盤
螺紋09 - 2011/12/14 16:39:32.593 - After ErrorForm.ShowDialog
爲什麼會發生這種情況,治癒的方法是什麼?
你確定你沒有交叉鏈接一個事件?把它重新制作成一個小的(新的)項目,當你真的有東西的時候再把它放在這裏。 –