Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how parentForm Reference is null?

I have an application in which i have added a usercontrol on the form. When i check this.parentForm in the userControl constructor it gives a null reference

My userControl Code is like

public UserControl1()
        {
            InitializeComponent();
            if (this.ParentForm != null)//ParentReference is null
            {
                MessageBox.Show("Hi");//Does Not get Called
            }
        }
like image 973
NIlesh Lanke Avatar asked Jan 09 '12 06:01

NIlesh Lanke


1 Answers

When the control is being created, it won't have been added to a form yet - so of course the parent form will be null.

Even if you'd normally write it as:

// 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 is being executed in the first line, but the first mention of form is in the second line... so how could the control have any visibility of it?

You should probably be handling the ParentChanged event instead, and taking appropriate action then. (Apologies if you're not using Windows Forms - I'm sure there's an equivalent for other UI frameworks; next time it would be useful if you could state what you're using in the question.)

like image 159
Jon Skeet Avatar answered Oct 14 '22 13:10

Jon Skeet