MDI优点和缺点

我inheritance了我现在工作的前一个开发人员的应用程序框架。 该框架利用多个父/子关系。 在许多情况下,父/父/子出现。 我问他为什么不使用MDI,并且他说多年前,当他开始时,MDI在前面提到的关系情景方面存在重大缺陷。 特别是与多个父母。

我的实际问题是; MDI还有这些缺点吗? 那些与MDI合作的人,你有什么问题,你是如何克服它们的?

谢谢!

MDI接口的一个问题是您无法在MDI容器中注册无限制的窗口(请参阅此Microsoft KB项目 )。 我认为这是因为我看到很多MDI应用程序在大量使用时遇到了这个错误。

我通常喜欢SDI接口,并使它在多个“某事”实例上共享相同的控件和窗口,而不是为每个“某事”实例生成一个新窗口。

我不知道程序界面的细节,但我还没有找到一些无法重写到SDI界面和一些modal dialog(如果真的需要)的东西。

我真的认为这是你inheritance的应用程序的一个缺点,它需要多个父母(你好紧密耦合的应用程序!)。

我曾经在一个应用程序(敲木头,我不会很快回到支持它),这可能很像你现在的。 如果原作者只使用代理而不是“this.Parent.Parent.Parent.functionX”,我们可能已经能够在修复该应用程序的缺点方面取得更大进展(并且代理人可能还没有去过……) 。

至于MDI,我个人更喜欢它,但我不能说出原始开发人员发现的缺点,因为我试图设计他/她所需要的关系。

当然,所有MDI都是一种将应用程序的所有窗口集中在一个明确标识的屏幕区域中的方法。 现在,如果您的应用程序是一个应用程序,它有多个文档,人们使用它,并希望在不使用时“放”它,那么MDI可能适合您。 如果不是,那就不是。

托尼

我确实在MDI中看到了一些故障,但说实话,如果你想要复杂的话,我可能会建议你看看WPF而不是winforms。

听起来我需要进一步调查MDI。 我对WPF的评论感到好奇,因为这与我迄今为止所教的内容相悖。

此外,一个兴趣点,框架开发人员称他的架构HDI(主机文档接口)。

谢谢!

当您打开无模式子屏幕并且您的父屏幕最大化时,您只能以最大尺寸打开子屏幕,您无法将其打开为正常大小的屏幕。