首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MDI切换到SDI并再次返回

从MDI切换到SDI并再次返回
EN

Stack Overflow用户
提问于 2009-11-16 22:20:51
回答 2查看 2K关注 0票数 0

这听起来像是一个简单的任务,但我遇到了一些问题。

对于我的C#应用程序,我有一些相当简单的代码:

代码语言:javascript
复制
    private void SwitchToSdi()
    {
        MainWindow mainWindow = GetMainWindow();

        for (int index = mainWindow.MdiChildren.Length - 1; index >= 0; index--)
        {
            Form form = mainWindow.MdiChildren[index];
            if (!(form is MainWindow))
            {                    
                form.Visible = false;
                form.MdiParent = null;
                form.Visible = true;
                mainWindow.MdiChildren[index] = null;
            }
        }
        mainWindow.IsMdiContainer = false;
    }

然后,

代码语言:javascript
复制
    private void SwitchToMdi()
    {
        MainWindow mainWindow = GetMainWindow();
        mainWindow.IsMdiContainer = true;
        for (int index = Application.OpenForms.Count - 1; index >= 0; index--)
        {
            Form form = Application.OpenForms[index];
            if (!(form is MainWindow))
            {
                form.Visible = false;
                form.MdiParent = mainWindow;
                form.Visible = true;
            }
        }
    }

注意,MainWindow是MDI父窗口,其IsMdiContainer属性设置为True。

用户可以在选项对话框中在MDI和SDI之间切换。很多东西都很好用。如果我切换到SDI,新窗口就会在主窗口之外打开,这很好。类似地,如果我切换到MDI,它们会在容器内打开。

然而,我注意到了一些事情。

  1. 打开的MDI子窗口不会像我预期的那样变成SDI窗口。
  2. 打开的SDI窗口并不像我所期望的那样成为MDI子窗口。即使在调用SwitchToMdi()中将IsMdiContainer设置为true之后,如果我尝试打开一个新窗口,则会得到一个异常,它告诉我主窗口不是MDI容器。o_O

谁来把骨头扔给我。这不应该是火箭科学。但是我在Intarweb上并没有找到很多有用的帮助(阅读: g00gle是相当无用的)。

以前有人在.NET中实现过这种行为吗?你是怎么做到的?我在这里错过了什么?停下来!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-04 07:27:50

不得不说,我以前没有这样做过,只是遇到了同样的问题。为了提供解决方案,我目前的想法是,您可以通过“复制”表单的状态来模拟所需的行为。创建一个新实例并将状态传递给构造函数。

票数 1
EN

Stack Overflow用户

发布于 2009-11-17 16:44:06

这是一个蹩脚的答案,但你已经18个小时没有回答了,所以这里.

在Borland/Embarcadero C++Builder帮助中,它指出“在运行时在SDI和MDI之间更改FormStyle是不可取的”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1745227

复制
相关文章

相似问题

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