2011-02-07 82 views
0

我在我的InitializeComponent中有一些影響基於某些變量的佈局的條件。不幸的是,似乎每當我重建我的應用程序時,這些代碼都會恢復到之前的狀態。這個代碼是基於Designer界面重新生成的嗎?有沒有辦法阻止它做到這一點?IntializeComponent不斷被覆蓋

+0

確實,這是設計。你需要把你的代碼放在其他地方。如果你需要做很多有條件的屬性設置,你可能根本不想使用設計器。 – 2011-02-07 17:35:51

回答

2

是的,InitializeComponent是完全由IDE生成的;甚至不要試圖搞砸它。

如果您有要添加/刪除某些控件的條件邏輯,請在您的控件的構造函數之後執行自動生成的對InitializeComponent的調用。

請注意,如果有條件的東西將取決於在設計時啓用/禁用的功能(例如,如果其他人正在使用您的控件,並且您提供了屬性來影響您打算在設計時設置的控件行爲時間),使用構造函數將不起作用,因爲構造函數在用戶從設計視圖中做出選擇時已經運行;在這種情況下,重寫OnLoad方法,並將邏輯放在那裏(或者做一些變化,例如,處理Load事件本身 - 有很多方法可以爲此貓着想)。

+0

總是比覆蓋`OnLoad`更好地處理事件,*特別是*如果您計劃讓其他開發人員利用您的控件。但+1是一個徹底和正確的答案。 – 2011-02-07 17:38:14