2015-10-26 40 views
0

我已經通過多種資源試圖找到何時手動添加代碼到InitializeComponent的用例,但沒有找到具體的東西。這表明我們不應該這樣做 - The code within the method 'InitializeComponent' is generated by the designer and should not be manually modified編輯InitializeComponent()方法C#

在過去,我一直使用表單設計器,並且從不需要手動對InitializeComponent()進行更改。然而,在我的新公司中,技術主管完全忽略了表單設計器,並在InitializeComponent中手動添加了大多數UI元素(即,它已被大量編輯或完全重寫,以至於Designer無法重新創建GUI VS,但GUI在代碼執行時可見且功能齊全)

不使用表單設計器的優點是什麼?這只是一個偏好問題嗎?是否爲簡單的UI元素手動編輯/重寫InitializeComponent是一種好的做法?

謝謝!

+1

據我所知,有兩個主要缺點:您失去了設計視圖,因此不知道組件的外觀如何,更糟糕的是,任何重建代碼都可能會清除所有的自定義更改。海事組織對於不真正瞭解或理解後果的人來說是一個不錯的選擇 –

+0

我不會這麼做。想知道他們這麼做的原因是什麼。基本上通過你的設計師。 –

+1

它可以更快地編輯代碼。將其編輯到設計師無法正確解析它的地步,對於喜歡使用設計師的團隊中的其他人來說也是粗略的。這是你的團隊必須解決的問題,沒有人可以幫助你解決這個問題。 –

回答

2

只有一個原因,可能需要編輯的InitializeComponent幾個原因,如:

  1. 要糾正一個壞工具箱項目設計師介紹的錯誤。
  2. 刪除無法從VS設計器中刪除的控件的所有痕跡。 (這必須小心翼翼。)
  3. 爲了快速進行「設計友好」的調整:更改屬性值,添加屬性設置或刪除屬性設置。添加設置時,我確定它看起來就像設計器生成的代碼。

編輯完InitializeComponent後,我總是將&切換回設計器模式,以確保我沒有損壞任何東西。

任何手動初始化代碼都應該添加到InitializeComponent之外,例如,在WinForms窗體或用戶控件中的OnLoaded()。至於修復現有的表單,取決於表單的複雜程度可能很簡單或幾乎不可能,特別是如果已經手動添加控件並且未調用所需的初始化方法(如SuspendLayout,BeginInit)。