Windows 窗体 C# 中子窗体的 MDI 父属性变为空

问题描述 投票:0回答:1

我是一名 13 岁的学生,正在学习 C#,我在 Windows 窗体应用程序中遇到了一个问题。将子窗体添加到面板后,其 MDI 父属性将变为 null。以下是相关代码片段:

public void OpenChildForm(Form childForm, object btnSender)
{
    previousForm = null;
    ActivateButton(btnSender);
    if (activeForm != null)
        activeForm.Close();
    childForm.MdiParent = this;
    childForm.TopLevel = false;
    childForm.FormBorderStyle = FormBorderStyle.None;
    childForm.Dock = DockStyle.Fill;
    this.panelDesktopPane.Controls.Add(childForm);
    childForm.BringToFront();
    childForm.Show();
    lblTitle.Text = childForm.Text;
}

动态添加子窗体到面板后,我注意到它的 MDI 父属性变为 null,导致意外行为 通过添加断点,我发现在将表单添加到 panelDesktopPane 后, mdiparent 属性立即变为 null

c# winforms mdi mdiparent
1个回答
0
投票

您面临的问题是由于表单不能同时是 MDI 子级和面板上的控件。当您将窗体添加到面板的控件时,它不再是 MDI 子级,并且其 MdiParent 属性变为 null。

从代码中删除以下行应该可以解决问题:

childForm.MdiParent = this;
© www.soinside.com 2019 - 2024. All rights reserved.