我有主窗體和一些其他窗體,可以顯示控件,放置在主窗體上,使用ShowDialog(控件)。另外我在主窗體上有事件處理程序,可以隨時處理。我怎樣才能在裏面檢查,有沒有其他的對話框形式?檢查窗體的子窗體 - C#
回答
如果我正確理解你的問題,我建議你檢查每個窗體的form.visible。
This可以幫助你
如果我正確理解你,你問是否在你的主窗體的事件處理程序中,你可以檢查是否有任何其他窗體是打開的。
如果您使用ShowDialog
顯示這些表單,那麼您的主窗體的線程將被阻止,直到新窗體關閉。我相信在此期間發生的任何事件都會等待,並在表格結束後予以處理。
如果您使用Show
顯示這些表單,那麼您需要保留一些對錶單的引用,以便在您的事件處理程序中檢查它們。
如果你的問題更清楚一點,或許我可以幫到更多。
對不起,我有一些英語問題。 我的事件處理程序處理來自另一個靜態類的事件(我的應用程序是多線程的,我使用這個靜態類作爲共享內存)。所以它可以隨時調用,就像簡單的方法一樣。或者可能是我錯了? – fadimko 2010-05-21 04:54:07
如果你是多線程的,那麼我相信這是可能的,正如你所描述的那樣。像Ram說的,你可以使用'form.visible'。確保你有正確的線程安全預防措施,並確保將表單的實例保存在你可以在你的處理程序中訪問的地方。也就是說,如果你只是調用'(new MyDialog())。ShowDialog()'你將無法在稍後檢查它的可見性。 – dlras2 2010-05-21 17:09:43
不,dlras2,主窗體的線程沒有被阻塞。在子窗體關閉之前,ShowDialog調用不會返回,但線程仍在處理事件(即Windows消息處理正在運行)。在子窗體中觸發的任何事件都可能導致主窗體中的代碼運行。無論應用程序是否爲多線程,情況都是如此。例如:子表單有一個引發公共事件的按鈕。主窗體爲該事件附加一個處理程序。現在,無論何時單擊按鈕,即使在可見子項時,也會執行主窗體的處理程序。 – ricovox 2014-05-29 19:13:03
- 1. C#窗體窗體:Mdi父窗體和子窗體問題
- 2. C#窗體窗體應用程序,從子窗體關閉父窗體
- 3. MDI子窗體C#
- 4. 子窗體內的子窗體控件
- 5. 子窗體內的子窗體
- 6. c#窗體窗體註銷
- 7. 的WinForms:子窗體關閉父窗體
- 8. 檢測從子窗體
- 9. OpenArgs打開窗體中的子窗體?
- 10. Windows窗體中的MDI子窗體
- 11. Rails的:子窗體在父窗體
- 12. 從主窗體驅動子窗體窗體中的MS Access查詢
- 13. 從子窗體訪問主窗體
- 14. Zend框架調用窗體作爲窗體內的子窗體
- 15. 檢查Windows窗體完成
- 16. dataentry窗體,如何在主窗體中定義子窗體
- 17. 來自窗體窗體的C#WPF調用UserControl窗體
- 18. C#子窗體不刷新
- 19. 檢測C#窗體窗體應用程序的啓動路徑
- 20. 如何從C#中的子窗體調用父窗體方法?
- 21. 子窗體的主窗體控件後面開在C#
- 22. C#根窗體繼承,更改導致破碎的子窗體
- 23. C#將MDI父窗體的值傳遞給子窗體
- 24. 從子窗體關閉父窗體
- 25. 引用父窗體到子窗體
- 26. 子窗體隱藏在主窗體中
- 27. ms Access窗體子窗體排序
- 28. 引用父窗體從子窗體
- 29. 子窗體跟隨主窗體
- 30. 窗體主窗體+子窗體堆棧問題
但我不能獲得積極的形式,並將其與主?它會解決我的問題。 – fadimko 2010-05-21 05:26:19
檢查更新的答案。 – Ram 2010-05-21 05:46:46
我下次會看完男人,謝謝 – fadimko 2010-05-21 06:01:04