When the control is created, it is not yet added to the form - therefore, of course, the parent form will be empty.
Even if you usually write it like:
// Where form might be "this" form.Controls.Add(new UserControl1());
You should think of it as:
UserControl1 tmp = new UserControl1(); form.Controls.Add(tmp);
Now your constructor runs on the first line, but the first mention of form is on the second line ... so how can the control have any visibility?
You are likely to handle ParentChanged and take action accordingly. (Sorry if you are not using Windows Forms - I am sure there is an equivalent for other user interface interfaces, next time it would be useful if you could indicate what you are using in the question.)
source share