I've recently noticed some behaviour with the Visual Studio Designer (C#) that I don't understand and was wondering if someone could clarify...
One some of my Windows Forms, the first line of the designer generated code reads;
this.components = new System.ComponentModel.Container();
When this is the case, the dispose method, in that same designer file, the dispose method places two "Dispose" calls within the case "if" condition as follows;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
base.Dispose(disposing);
}
}
i.e. Nothing is called unless disposing is true, AND components is not null.
On some other forms, that first line in the designer generated code is missing. In these cases the base.Dispose call is outside the "if" condition as such...
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
I have noticed this while tracking down a bug with a form not closing, where this.components was null, yet the base.Dispose call was inside that condition (I suspect the designer code had been tampered with but that's another story.
What controls this behaviour?
(Some earlier forms in the project were created in VS 2005 and we now use VS 2008 - clue?)