我有一個自定義「選項卡」概念的WinForms應用程序,因爲有3個按鈕調用其各自的面板「BringToFront()」方法。C#WinForms控制訂單更改事件
由於這些面板都是在初始化表單時初始化的,但它們包含自己獨立的功能,所以我不想初始化一些更密集的任務,直到該面板「切換」爲止。
例如,我的一個面板具有Twitter連接功能。如果我在面板初始化時初始化Twitter連接,則可能會失敗,理論上用戶使用完全不同的面板/功能。
我只希望它在用戶訪問此面板時嘗試連接到Twitter。
所以,我一直在閱讀MSDN,但找不到控件顯示順序發生變化時觸發的事件。
我遇到這些事件,但不知道哪個/如果有的話,這些工作或是最好的:
Panel.OnVisibleChanged Panel.OnEnter Panel.OnGotFocus
我還在學習C#,所以任何幫助/評論表示讚賞。
對於每個面板在某處保留一個標誌,顯示面板是否已加載。創建一個切換到面板的方法。在該方法中,檢查面板是否仍未加載,然後加載並設置標誌並將其放在前面。 –
這個問題是背地任務的一個很好的例子。一旦您感覺當前面板的屬性已設置,您可以開始在後臺初始化其他面板。面板的標籤屬性可以用來保存一個布爾值,如果它的設置與否。此外,您可以隱藏並顯示面板而不是BringToFront。這將觸發VisibleChanged事件,並且一旦可見,便於捕獲和處理。 –
作爲另一種選擇,您可以在'UserControl'類中封裝面板的內容,然後在第一次單擊按鈕時檢查相關面板是否爲空,然後創建所需用戶控件的實例並將其添加到面板。您可以將加載邏輯封裝在用戶控件的加載事件中。 –