问题描述
我有一个 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();
解决方法
您将按钮直接放在父 MDI 窗体上,这不是 MDI 样式应用程序的典型特征。相反,将当前在按钮单击事件中的代码放在菜单选项或功能区按钮中(它们也可以动态创建)。 或者,创建一个子窗体,将其最大化,然后将按钮放在其上。
,我认为 Microsoft Store submission API
在发布的重复链接上的回答很有趣。不要使用 sam
,而是设置 MDI
并将 form.TopLevel = false;
添加为子控件。我不确定这种方法是否有任何缺点。
form