parentForm引用如何为null

本文关键字:null 引用 parentForm | 更新日期: 2023-09-27 18:19:44

我有一个应用程序,在其中我在表单上添加了一个用户控件。当我在userControl构造函数中检查this.parentForm时,它会给出一个空引用

我的userControl代码类似

public UserControl1()
        {
            InitializeComponent();
            if (this.ParentForm != null)//ParentReference is null
            {
                MessageBox.Show("Hi");//Does Not get Called
            }
        }

parentForm引用如何为null

当创建控件时,它还没有添加到窗体中,因此父窗体当然将为null。

即使你通常会把它写为:

// Where form might be "this"
form.Controls.Add(new UserControl1());

你应该把它看作:

UserControl1 tmp = new UserControl1();
form.Controls.Add(tmp);

现在,您的构造函数是在第一行执行的,但第一次提到form是在第二行。。。那么控制装置怎么能看到它呢?

您可能应该处理ParentChanged事件,然后采取适当的操作。(如果你没有使用Windows窗体,我很抱歉-我相信其他UI框架也有类似的框架;下次如果你能在问题中说明你在使用什么,那会很有用。)

你添加了什么?实际上不需要,删除这行

 if (this.ParentForm != null)//ParentReference is null
public UserControl1()
        {
            InitializeComponent();            
            MessageBox.Show("Hi");//Does Not get Called
        }