簡體   English   中英

在 C# 中調用 ShowDialog(ParentForm) 時會觸發哪些事件

[英]What events are triggered when ShowDialog(ParentForm) is called in C#

簡單的問題。 我有一個 MainForm 和一個 settingsForm。 設置表單初始化一次,然后在用戶每次單擊按鈕時顯示。 單擊此按鈕時,我需要它執行某些操作。

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form

這是調用設置表單的 MainForm,它做得很好。 但是每次發生這種情況時我都需要 SettingsForm 做一些事情。 目前,我無法弄清楚這個調用是否真的觸發了我可以為其設置處理程序的任何事件。 它會觸發一個事件嗎? 如果沒有,是否有另一種方法可以讓我的 SettingsForm 每次發生此調用時執行某些操作?

注意:在 SettingsForm 返回之前,不會執行該行之后主窗體中的任何代碼,但這是有意的。

謝謝。

編輯:我希望我的表單做的一件事是在發生這種情況時選擇一個特定的控件,但似乎在表單加載完所有內容之前這是不可能的。

您可以在設置表單中覆蓋OnVisibleChanged方法。 確保調用base.OnVisibleChanged以免搞砸事件的任何潛在觀察者(以及基類可能在該方法內執行的任何其他操作。)

FormShown事件 - 僅在第一次顯示表單時引發一次。 OnPaint / OnActivate - 每次激活表單時,即使您與其他應用程序切換時也會引發這些事件,這可能是您不想做的。 如果要更改表單可見性,則可以使用OnVisibleChanged如果要最小化表單,則可以使用OnSizeChanged / OnLocationChanged事件。

如果不適合您,請創建一個公共屬性並在關閉/隱藏表單時設置為 false,並在顯示之前設置為 true。 OnActivate ,使用此屬性來完成您的任務。

覆蓋表單中的 OnShown() 事件這只會在表單打開后引發一次 OnVisibleChanged 的​​缺點是它也會在表單關閉時引發。 On Paint , On Activate 和 OnEnter 將在表單顯示給用戶之前引發。

也許使用 VisibleChanged 事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM