2011-04-05 123 views
3

某些表單初始化問題I was having被追蹤到.Designer.cs文件,覆蓋了我在用戶控件的構造函數中初始化的值。什麼東西觸發Visual Studio重新生成* .Designer.cs文件?

我設計了一個組件(MyUserControl)並將其插入表格(MainForm)。我後來在MyUserControl的構造函數中添加了一些成員初始化,但中InitializeComponent()的代碼已過時,稍後在該函數中的代碼將覆蓋來自該函數中早期調用的構造函數的新的初始化。

所以,從本質上講,我所做的一些事情引發了Mainform.Designer.cs的重寫,但其他活動卻沒有。

是否有一個很好的參考來描述設計人員觸及* .Designer.cs文件的時間? (或者這是一個簡單的規則?)Jared Par指給我的是DesignerSerializationVisibilityAttribute類,但這似乎是森林中的一棵樹?

回答

5

您明確地成爲將UserControl的舊版本的代碼仍嵌入到窗體的InitializeComponent()方法中的犧牲品。如果您在修改控制代碼之前已經從窗體中刪除了控件,那麼您就不會遇到問題。之後將其移除並放回原處也會修復它。

是的,這是一個簡單的規則。每次向表單添加或刪除控件時,都會重新生成InitializeComponent()。

+0

(++)謝謝漢斯。是增加/刪除控件或多或少的* only *方法來獲取InitializeComponent()來「刷新?」如果是這樣,我可以看到很多相當微妙的錯誤悄然進入解決方案。如果擁有比這更自動的東西,那將是很好的。 – John 2011-04-05 02:04:52

+1

這與改變普通班級的公共成員沒有任何區別。你總是冒着破壞使用它的其他代碼的風險。或者是現有的代碼打破了編輯過的類。設計師實際上可以更容易地修復這種破損,您只需要移除控件並將其放回原處:) – 2011-04-05 02:20:19

相關問題