[.NET]為什麼UserControl的Load事件沒有被觸發到?

為什麼UserControl的Load事件沒有被觸發到呢?

今天同事問一個問題,為什麼UserControl的Load事件沒有被觸發到呢?

明明程式就是從UI去DBClick進入 Load 的事件處理 Method 中寫入程式,為何程式執行起來就是沒有被觸發到呢?

image

 

於是請同事給我EXE檔,我用 .NET Reflector 來看一下有什麼問題。

結果真的發現怪怪的地方,程式中有 Load 事件處理函式 ZZB11301_Load,也有覆寫 OnLoad Method ,如下圖,

image

 

心想,會不會是 OnLoad 的問題呢? 結果一看裡面的程式,居然沒有呼叫 base.OnLoad(e); ,如下圖,

image

 

謎題解開了,因為同事覆寫 OnLoad Method,卻沒有呼叫base的 OnLoad Method(在UserControl的 OnLoad Method 中,取得 Load Event 的處理函式,然後呼叫它們),所以自然就不會觸發到 Load 事件。

所以請同事將 OnLoad Method 中的程式移到 Load 事件中,不需要再覆寫 OnLoad Method 。或是將 base.OnLoad(e); 加到覆寫的 OnLoad Method 之中。

在使用 override 時,是要注意一下,是否真的要將base是Method整個覆寫掉嗎?!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^