2010-05-26 56 views
1

爲了調查的目的而移動一些代碼時,我遇到了一點我不知道的.NET特性,那就是表單類必須是表單模塊中的第一個類,表單設計師工作。以下停止設計師工作:表單代碼佈局規則

public class myClass 
{ 
} 

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

... 
} 

它仍然編譯(帶警告)並運行,但它不會設計。如果我將myClass移動到文件的底部,那麼它工作正常。有誰知道這是爲什麼?

此外,這意味着有一套規則在我不知道的表單中編碼佈局。有沒有人知道這些地方的清單 - 或者我找到了唯一的清單?

+1

您還應該避免編輯設計器自動生成的代碼。很脆弱。使用「設計器和文檔大綱」窗口來更改控件創建的順序以及容器與子對象的關係,以實現以下目的:) 我注意到MSVS 2008設計器有時會在我嘗試更改子控件創建流程後發瘋,並刪除或添加了代碼行。 – 2010-05-26 07:08:51

回答

3

我認爲這是.NET 1.1設計器的工件。當時還沒有部分關鍵字,但設計人員仍然無法迴避InitializeComponent()方法,即使在正在編輯中的代碼中也是如此。沒有編譯器的幫助。

爲了避免不正確地解釋代碼的風險,它有關於代碼應該是什麼樣子的一些基本規則。並且要求表單類成爲文件中的第一個類是非常有意義的。如果該規則不在那裏,它必須能夠通過一個可能有非常基本的語法錯誤的類來解析,比如不平衡的大括號。在這種情況下簡單地聲明「無法加載表單」並不會讓任何人開心。

一旦部分關鍵字變爲可用,這個要求就無法解除,它仍然需要支持在早期版本中設計的表單。

這是我所知道的唯一代碼佈局規則。有其他可能出現的錯誤,還有很多,手動修改InitializeComponent()總是獲取WSOD的好方法。

0

顯然這只是設計師。沒什麼可擔心的。

這與C#本身無關,但更多與Visual Studio設計人員在屏幕上查找和繪製窗體。