2014-12-03 78 views
1

出於某種原因由Windows窗體設計器生成的任何代碼寫入到我Form.vb類,而不是給它所屬的Form.designer.vb類。我希望你能幫我弄清楚是什麼原因造成的。Visual Studio中編寫代碼到Form1.vb的,而不是form1.designer.vb

我刪除的代碼量可能,並能重現該問題有以下設置:

Namespace MyNamespace 
public class Form 
    Inherits System.Windows.Forms.Form 
End Namespace 

這實際上是所有在我的形式留下的代碼 - 沒有方法/函數/成員。當我刪除名稱空間聲明時,再次在Form1.designer.vb文件中生成代碼。

爲什麼命名空間與Visual Studio的功能造成干擾?

+0

我剛剛創建了一個新的項目從無到有,以確保我沒有任何依賴關係或設置干擾。我可以通過向自動生成的Form1類添加「Inherits System.Windows.Forms.Form」和任意名稱空間聲明來重現此行爲。 – 2014-12-03 10:58:38

+0

另一句話:當我生成一個新的類(而不是形式),並從System.Windows.Forms.Form中繼承手動發生同樣的問題。在這種情況下,不會生成designer.vb類,並且所有屬於該類的代碼都將寫入我的mainclass。在這種情況下,我甚至不需要命名空間來獲得這種行爲。這讓我認爲儘管Visual Studio在兩種情況下都無法找到對designer.vb的適當引用。 – 2014-12-03 11:27:21

+2

當您這樣做時,設計師會回到傳統的VS2002/3行爲。當部分類尚未得到支持時返回。類聲明中丟失的* Partial *關鍵字是它的提示。 – 2014-12-03 12:51:24

回答

0

手動添加命名空間到designer.vb文件適用於現在。但是我不確定visual studio是否可以在designer.vb代碼被修改的某些操作中刪除它。

+0

在不同的文件類的所有部分的命名空間必須是相同的,所以該類實際上被認爲是同一類。如果在一個文件中更改名稱空間,則還必須在組成該類的所有其他文件(也在Designer文件中)中更改它。設計師不會自動執行此操作。否則,設計器文件中的類將構成與另一個文件中的類不同的類。這就是設計師在主文件中生成代碼的原因,因爲另一個不再與其關聯。 – 2017-04-19 10:58:23

相關問題