如何始终在其他MDIChild表单的顶部显示MDIChild表单?
我已经将ChildForm的TopMost属性设置为True,但是表单的行为仍然是一样的……
我已尝试将ChildForm的TopLevel属性设置为True,但收到错误消息...“不能更改父级控件的顶级样式。”
我如何实现这一点。
谢谢
发布于 2010-08-06 20:39:03
该框架显然不支持相互拥有的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子对象(即所有者)在容器中最大化时,会出现奇怪或模棱两可的预期行为。如果您在这种情况下单击它,上面的代码将允许所拥有的窗体位于最大化的父窗体之后。但是,如果您将它放在容器之外,那么它将保持可见。
发布于 2011-03-10 04:24:53
一个更好的解决方案,不需要每隔一次更改其他表单:-声明新的工具箱作为主父控件(This)的控件:
fForm fFormObj = new fForm();
fFormObj.TopLevel = false;
this.Controls.Add(fFormObj);
fFormObj.Parent = this;
fFormObj.TopMost = true;
fFormObj.Show();https://stackoverflow.com/questions/3423487
复制相似问题