和所有類一樣,視窗也有生存期,在第一次例項化視窗時生存期開始,然後就可以顯示、啟用和停用視窗,直到最終關閉視窗。
1、顯示窗體
2、窗體的啟用
在首次開啟乙個視窗時,它便成為活動視窗(除非是在 showactivated 設定為 false 的情況下顯示)。 活動視窗是當前正在捕獲使用者輸入(例如,鍵擊和滑鼠單擊)的視窗。 當視窗變為活動視窗時,它會引發 activated 事件。
當第一次開啟視窗時,只有在引發了 activated 事件之後,才會引發 loaded 和 contentrendered 事件。 記住這一點,在引發 contentrendered 時,便可認為視窗已開啟。
視窗變為活動視窗之後,使用者可以在同乙個應用程式中啟用其他視窗,還可以啟用其他應用程式。 當這種情況出現時,當前的活動視窗將停用,並引發 deactivated
事件。 同樣,當使用者選擇當前停用的視窗時,該視窗會再次變成活動視窗並引發 activated。
3、關閉窗體
當使用者關閉視窗時,視窗的生命便開始走向終結。
4、窗體的生命週期。如下圖。
為了證實上面的結論,我們用下面的**進行測試:
using開啟窗體的事件執行順序為:如下圖。system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading;
using
system.threading.tasks;
using
system.windows;
using
system.windows.controls;
using
system.windows.data;
using
system.windows.documents;
using
system.windows.input;
using
system.windows.media;
using
system.windows.media.imaging;
using
system.windows.shapes;
using
system.windows.threading;
namespace
void windowthd_sourceinitialized(object
sender, eventargs e)
void windowthd_unloaded(object
sender, routedeventargs e)
void windowthd_closed(object
sender, eventargs e)
void windowthd_loaded(object
sender, routedeventargs e)
void windowthd_deactivated(object
sender, eventargs e)
void windowthd_contentrendered(object
sender, eventargs e)
void windowthd_closing(object
sender, system.componentmodel.canceleventargs e)
void windowthd_activated(object
sender, eventargs e)
private
void
modifyui());}
private
void btnthd_click(object
sender, routedeventargs e)
private
sender, routedeventargs e)
));}).start();}}
}
wpf生命週期
注意 windows視窗的生命週期也有好幾個階段 1 構造器被呼叫 2 window.initialized事件被觸發 3 window.activated事件被觸發 4 window.loaded事件被觸發 5 window.contentrendered事件被觸發 6 使用者和視窗進行互動 7 ...
WPF中的視窗的生命週期
wpf中所有視窗的基型別都是system.windows.window。window通常用於sdi視窗和對話方塊。window在應用程式中除了乙個設計用於託管頂級內容的控制項外,就別無他物了。典型的,可以混合使用標記和 來定義乙個視窗。如下 在xaml頁 xmlns xmlns x title th...
WPF高階教程(十)WPF程式的生命週期
建立 xmlns xmlns x 其中比較關鍵的是指定了startupuri關閉 事件處理 1.關聯事件處理程式 xaml cs檔案 2.直接複寫 protected override void onactivated eventargs e onsessionending方法如果監聽,設定e.ca...