代码之家  ›  专栏  ›  技术社区  ›  Mark P Neyer

如何在.NET中保持MDI布局?

  •  0
  • Mark P Neyer  · 技术社区  · 16 年前

    我正在用C语言编写MDI应用程序。我想要一种方法来存储所有打开的窗口的位置和内容,这样用户就可以自定义多个文档的查看方式。有没有一个简单的方法可以做到这一点,或者我必须推出自己的解决方案?

    1 回复  |  直到 16 年前
        1
  •  1
  •   itsmatt    16 年前

    我见过一些形式的持久性类,但它们并没有完全满足我的需要。最后我自己卷了起来,基本上做了以下工作:

    Control mdiClientControl;
    foreach (Control control in Controls)
    {
       if (control is MdiClient)
       {
          mdiClientControl = control;
          break;
       }
    }
    
    foreach (Form mdiChild in MdiChildren)
    {
       string theName = mdiChild.Name + "_Window_Layout";
       DoSave(theName, "Top", mdiChildTop);
       .
       .
       .
       DoSave(theName, "WindowState", (int)mdiChild.WindowState);
       DoSave(theName, "Visible", mdiChild.Visible);
       DoSave(theName, "ChildIndex", theMDIClientControl.Controls.GetChildIndex(mdiChild));
    }
    

    dosave()只是将这些信息存储在用户空间中的某个XML文件中,但是您当然可以以不同的方式存储它。

    在适当的时候,比如在启动时,我有一个readsettings()方法,它基本上可以反转进程,询问保存的设置,设置值。也许有一个更优雅的解决方案,但这一个对我来说非常有效。

    希望有帮助。

    推荐文章