首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示MDI子项始终在其他MDI子项之上

显示MDI子项始终在其他MDI子项之上
EN

Stack Overflow用户
提问于 2010-08-06 19:53:56
回答 2查看 9.6K关注 0票数 1

如何始终在其他MDIChild表单的顶部显示MDIChild表单?

我已经将ChildForm的TopMost属性设置为True,但是表单的行为仍然是一样的……

我已尝试将ChildForm的TopLevel属性设置为True,但收到错误消息...“不能更改父级控件的顶级样式。”

我如何实现这一点。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-06 20:39:03

该框架显然不支持相互拥有的MDI子窗口,因此您必须自己模拟该行为:

代码语言:javascript
复制
  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子对象(即所有者)在容器中最大化时,会出现奇怪或模棱两可的预期行为。如果您在这种情况下单击它,上面的代码将允许所拥有的窗体位于最大化的父窗体之后。但是,如果您将它放在容器之外,那么它将保持可见。

票数 1
EN

Stack Overflow用户

发布于 2011-03-10 04:24:53

一个更好的解决方案,不需要每隔一次更改其他表单:-声明新的工具箱作为主父控件(This)的控件:

代码语言:javascript
复制
fForm fFormObj = new fForm();
fFormObj.TopLevel = false;
this.Controls.Add(fFormObj);
fFormObj.Parent = this;
fFormObj.TopMost = true;
fFormObj.Show();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3423487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档