2010-09-03 49 views
2

我正在清理一個應用程序,我差不多完成了,我注意到一些讓我好奇的原因,爲什麼它正在這樣做。雖然您可以在項目中爲表單編輯.Designer.cs,但其中有很多自動生成的東西,例如創建變量和控件。他們有Windows窗體設計器生成的代碼,幾乎從未被我感動過。但正如我在格式製作變量我喜歡他們:高效的聲明/創建變量/控件

string strValue1, 
     strValue2; 

相比於:

string strValue1; 
string strValue2; 

我注意到了Windows聲明對文件的底部控件,接着創建/實例化它們在InitializeComponent()函數。現在,我知道我可以將「新」實例放到聲明所在的位置,並且它看起來運行良好。我的問題是一個人比另一個人有什麼好處?還是這樣,Windows可以爲我們自動生成它們?如果有可能以更好的表現來做到這一點,我想知道。感謝球員的幫助。

例1:

private void InitializeComponent() 
{ 
    ... 
    this.control1 = new System.Windows.Forms.Control(); 
    ... 
} 

... 

System.Windows.Forms.Control control1; 

例2:

private void InitializeComponent() 
{ 
    ... 
} 

... 

System.Windows.Forms.Control control1 = new System.Windows.Forms.Control(); 

回答

1

不能編輯該代碼。它是自動生成的,設計者實際上會讀取代碼以在設計器中重新創建表單。當你做出這樣的改變時,很可能你會炸燬設計師,你的表單變得無法設計。即使你設法避免崩潰,當你在設計器中改變表單時,你的改變也會消失。

標記爲「Windows窗體設計器生成的代碼」的區域中的任何內容都是不干涉的。

這些改變沒有任何好處。它生成完全相同的代碼。

+0

是的,我只是注意到它將我的數組像我一樣去掉了。 :(這樣會讓我提出另一個問題,如果它是自動生成的並且會轉換回來,爲什麼可以讓我們看看?他們不能把它包裹在某個地方,所以我們不去碰它嗎?你知道我們程序員,我們喜歡修補東西。 :) – XstreamINsanity 2010-09-03 14:44:17

+0

他們做到了,那是#地區在那裏。它默認是摺疊的。讓代碼對編譯器可見但不是文本編輯器是不存在的技巧。看着它是非常合法的。 – 2010-09-03 14:57:56

+0

:)我的意思是我們完全無法看到它的一種方式。一種方法可以使我們改變任何事情的唯一途徑就是通過表格或其他東西。我不想那樣,我寧願能夠編輯它,但是男人,我討厭成爲一個不知道這一點的人,編輯一個巨大的表格,只是爲了讓他們做很多事情而已。謝謝(你的)信息。 – XstreamINsanity 2010-09-03 16:16:49

0

你可以得到一些更多的控制權東西,當它在InitializeComponent

做。如果你打開。 cs文件(不是設計者),看看構造函數

public Form1() 
{ 
    InitializeComponent(); 
} 

這種方式,您可以有代碼執行控件實例化之前..

,如果你只想創建控件在聲明那麼當你將不能夠做到這一點...

+0

所以,我想進一步探討一下,你會說在我的應用程序中的處理會在組件初始化之前運行得更快嗎?編輯:是的,我知道它是在構造函數中,我只是想知道它的一些肉,所以我知道如果我使用它的全部功能,或者如果我應該嘗試一些新的東西。 – XstreamINsanity 2010-09-03 13:49:41

+0

好吧,如果它會跑得快或不是一個複雜的方式:P,但即使有差異,你不會注意到它.. – Peter 2010-09-03 14:15:05

+0

大聲笑。這是我的主要問題/關注。我只在該領域工作了3年,所以我可以構建一個應用程序。但構建最高效的應用程序,我還沒有。我不知道是否會導致內存泄漏或類似的東西,所以我想確保。 – XstreamINsanity 2010-09-03 14:18:53