15

I have been working through the Head First C# book and have used the InitializeComponent(); method several times.

An example of this is on the Party Planner exercise I created a class called DinnerParty.cs and then used this code in the Form1.cs

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

My Question is, what exactly is the Initialize Component method doing. My understanding is that I am defining a new object or instance of the DinnerParty class and setting up all the values, so far I have assumed that InitializeComponent() is kind of saying "Set up values of my fields using the following:"

Could I please have a BASIC, something I can get my head around definition. I have looked at previous posts and answers regarding this and everything is too complex. I will mark the easiest to understand response that still has the key information as the answer.

JsonStatham
  • 8,163
  • 26
  • 88
  • 160
  • 3
    If you have a look at `Form1.Designer.cs` it will contain the method `InitializeComponent`. Basically it just initializes the form's content. – matthewr Sep 06 '12 at 09:35
  • 2
    Right click `InitializeComponent` in Visual Studio and select `Go to Declaration`. Ta da. – Adam Sep 06 '12 at 09:40
  • 1
    See [InitializeComponent Explanation](http://www.dotnetperls.com/initializecomponent) – logicnp Sep 06 '12 at 09:35

2 Answers2

31

InitializeComponent is a method automatically written for you by the Form Designer when you create/change your forms.

Every Forms file (e.g. Form1.cs) has a designer file (e.g. Form1.designer.cs) that contains the InitializeComponent method, the override of the generic Form.Dispose, and the declaration of all of your User Interface objects like buttons, textboxes, labels and the Form itself.

The InitializeComponent method contains the code that creates and initializes the user interface objects dragged on the form surface with the values provided by you (the programmer) using the Property Grid of the Form Designer. Due to this fact do not ever try to interact with the form or the controls before the call to InitializeComponent.
Also, you will find here, the plumbing required to link the controls and form events to the specific event handlers you have written to respond to the user actions.

The code contained in Form1.cs and the Form1.Designer.cs files is part of the same class thanks to the concept of partial classes that could keep two or more files of your code together like a single block of code.

Of course, due to the high numbers of changes executed by the Form Designer, it is a really good advice to not try to modify manually this method, while, sometime, I find useful to add code to the Dispose method with the purpose to destroy some unmanaged objects created in the form lifetime.

Steve
  • 203,265
  • 19
  • 210
  • 265
2

InitializeComponent is a method which is used to initialize your form. It has nothing to do with your DinnerParty class.

So, it might be setting up things like the buttons, labels, event handlers, and so on on your User Interface.

Here's a more in depth explanation. What does InitializeComponent() do, and how does it work in WPF?

Community
  • 1
  • 1
NeilD
  • 2,114
  • 2
  • 23
  • 28