2012-09-06 18 views
11

我一直在通過Head First C#書籍並使用InitializeComponent();方法幾次。非常簡單的InitializeComponent()的定義;方法

這方面的一個例子是在黨的計劃練習,我創建了一個類調用DinnerParty.cs然後在Form1.cs的

public Form1()   
     {   
      InitializeComponent(); 
      dinnerParty = new DinnerParty() { NumberOfPeople = 5 }; 
      dinnerParty.SetHealthyOption(checkBox2.Checked); 
      dinnerParty.CalculateCostOfDecorations(checkBox1.Checked); 
      DisplayDinnerPartyCost(); 
     } 

使用此代碼我的問題是,究竟是什麼初始化組件的方法這樣做。我的理解是,我正在定義DinnerParty類的新對象或實例並設置所有值,到目前爲止,我假定InitializeComponent()有點「使用以下設置我的字段的值:」

我可以請一個基本的,我可以讓我的頭腦定義。我看過以前的帖子和關於這個的答案,一切都太複雜。我會標記最容易理解的答案,而答案仍然以關鍵信息爲準。

+3

如果你看看'Form1.Designer.cs',它將包含'InitializeComponent'方法。基本上它只是初始化表單的內容。 – 3aw5TZetdf

+2

在Visual Studio中右鍵單擊'InitializeComponent'並選擇'Go to Declaration'。達達。 – Adam

+0

請參閱[InitializeComponent說明](http://www.dotnetperls。com/initializecomponent) – logicnp

回答

24

的InitializeComponent是當你創建/修改表單的窗體設計器會自動爲您編寫的方法。

每個表單文件(如Form1.cs中)有一個設計文件,其中包含InitializeComponent方法,通用的覆蓋Form.Dispose(如Form1.designer.cs),您的所有用戶的聲明像按鈕,文本框,標籤和窗體本身的界面對象。

The InitializeComponent方法包含的代碼使用表單設計器的屬性網格創建並初始化用戶(程序員)提供的值在窗體表面上拖動的用戶界面對象。由於這個事實,在調用InitializeComponent之前,不會嘗試與窗體或控件進行交互。
此外,您會在這裏找到將控件和表單事件鏈接到您編寫的特定事件處理程序以響應用戶操作所需的管道。

包含在Form1.cs和Form1.Designer.cs文件中的代碼是同一類的一部分,這要感謝partial classes的概念,它可以將代碼的兩個或多個文件像一個代碼塊一樣保存在一起。

當然,由於高數量由窗體設計器中執行的變化,這是一個非常好的建議,不嘗試修改手動這種方法,同時,有時,我發現有用的代碼添加到處置方法,目的是銷燬在表單生命期中創建的一些非託管對象。

+2

這是一個很好的答案。 –