使用另一个类C#WinForms

时间:2017-12-18 16:01:25

标签: null user-controls parent

我有这个功能

private void UndockControl()
    {
        if (Parent == null)
        {
            Control c = this.Parent;
        }
        if (m_floatingFrame == null)
        {
            m_floatingFrame = new FloatingFrameWindow();
            m_floatingFrame.Owner = ParentForm;
        }

        if (Parent is TableLayoutPanel)
        {
            var parentPanel = (TableLayoutPanel)Parent;
            var col = parentPanel.GetColumn(this);
            var small = new ColumnStyle(SizeType.Absolute, 1);
            parentPanel.ColumnStyles[col] = small;
        }

        Parent.Controls.Remove(this);
        m_floatingFrame.Controls.Add(this);
        ParentForm.FormClosing += ParentForm_FormClosing;
        Dock = DockStyle.Fill;

        m_floatingFrame.Show();
        m_isDocked = false;
        uiDockButton.ImageIndex = 0;
    }

此控件嵌套在其他控件中。 如果我将函数设置为public并使该类的实例调用此函数,那么当我运行代码时,会在此行Parent.Controls.Remove(this);中给出错误,因为Parent对象为null(也是ParentForm)。 有没有办法实例或某些东西,以便拥有此控件的父控件? 如果我使用事件按钮来调用函数(内部事件,而不是其他类(表单)),上面的代码工作正常。

1 个答案:

答案 0 :(得分:0)

我做了一个小项目,以便找出嵌套在其他控件中并在窗体类外部调用的控件的行为。似乎如果从另一个类调用它,则父表单将为null。