出现在父表单控件下方的子表单

问题描述

我有一个 C#、.net、Windows 窗体应用程序。我有一个表单设置为 MDI 容器,我可以在其中动态添加按钮。单击按钮会打开一个子窗体。但是,我创建的按钮出现在子窗体的顶部,而不是子窗体出现在(并覆盖)父窗体上的所有内容之上。我做错了什么?

以下是我将按钮添加到表单的方法

            Button btn1 = new Button();
            btn1.BackColor = ColorTranslator.FromHtml("#456EA4");
            btn1.Text = department.DepartmentName;
            btn1.Location = new System.Drawing.Point(posX,posY);
            btn1.Size = new System.Drawing.Size(sizeX,sizeY);
            btn1.Font = new System.Drawing.Font("Calibri",40F,System.Drawing.FontStyle.Regular,system.drawing.graphicsUnit.Point,((byte)(0)));
            btn1.ForeColor = Color.WhiteSmoke;
            btn1.TabStop = false;
            this.Controls.Add(btn1);

这是我打开子表单的位置:

        frmToBuildFromSchedule frmToBuild = new frmToBuildFromSchedule(department);
        frmToBuild.FormClosed += new FormClosedEventHandler(frmToBuildFromSchedule_FormClosed);
        frmToBuild.MdiParent = this;
        frmToBuild.Show();

结果如下:

enter image description here

解决方法

您将按钮直接放在父 MDI 窗体上,这不是 MDI 样式应用程序的典型特征。相反,将当前在按钮单击事件中的代码放在菜单选项或功能区按钮中(它们也可以动态创建)。 或者,创建一个子窗体,将其最大化,然后将按钮放在其上。

,

我认为 Microsoft Store submission API 在发布的重复链接上的回答很有趣。不要使用 sam,而是设置 MDI 并将 form.TopLevel = false; 添加为子控件。我不确定这种方法是否有任何缺点。

form

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...