如何在其他MDIChild表单之上显示MDIChild表单?
我已将ChildForm的TopMost属性设置为True,但表单的行为方式仍然相同......
我试图将ChildForm的TopLevel属性设置为True并收到错误消息...“无法更改”父级控件的顶级样式“。
我如何实现这一目标。
由于
答案 0 :(得分:2)
更好的解决方案,不需要更改所有其他形式: - 将新工具箱声明为主要父级的控件(this):
fForm fFormObj = new fForm();
fFormObj.TopLevel = false;
this.Controls.Add(fFormObj);
fFormObj.Parent = this;
fFormObj.TopMost = true;
fFormObj.Show();
答案 1 :(得分:1)
该框架显然不支持相互拥有的MDI子窗口,因此您必须自己模拟该行为:
static Form f1 = new Form();
static Form f2 = new Form();
static Form f3 = new Form();
[STAThread]
static void Main()
{
f1.IsMdiContainer = true;
f2.MdiParent = f1;
f3.MdiParent = f1;
f1.Show();
f2.Show();
f3.Show();
f2.Activated += new EventHandler(f2_Activated);
Application.Run(f1);
}
static void f2_Activated(object sender, EventArgs e)
{
f3.Activate();
}
我通常只是让拥有的表格不是MDI子表格。他们不会留在MDI容器中,但至少他们会留在前面。
这种限制存在的原因可能是因为当作为所有者的MDI子项在容器内最大化时,所需的行为是奇怪的或模糊的。如果在这种情况下单击它,上面的代码将允许拥有的表单落后于最大化的父级。但是,如果你把它放在容器外面,那么它将保持可见。
答案 2 :(得分:0)
//修改
由于只需要关注一个MdiChild表单,请尝试以下操作:
在MdiChildActivate
事件中重新聚焦或重新激活所需窗口作为激活的子窗口。
您还可以使用Deactivated
事件来强制重新关注相关子窗口。
<击> 当您创建表单并显示它时,还会附加对焦点方法的调用。
ChildForm.Focus()
设置焦点应该是最重要的。
击>
希望它有所帮助。