繁体   English   中英

C# - WinForms - SDI 或 MDI 方法?

[英]C# - WinForms - SDI or MDI Approach?

我正在创建一个 Visual C# WinForms 应用程序,它将包含 4 个 forms:

  1. 一个“控制”表单,将有 2 个按钮,可能多达 10 个左右。 因此屏幕需要为最大数量的按钮提供足够的空间。
  2. 将包含大型富文本框控件的“日志记录”表单。
  3. 一个“配置”表单,其中包含一个选项卡控件,其中包含可以调整的各种配置设置。
  4. 与#2 非常相似的“订单日志”表单。

用户可能希望以不同的方式重新定位每个 forms。 然而,我希望这些 forms 由父表单“管理”,这样当应用程序关闭时,所有其他 forms 都会关闭。 有没有办法保持 MDI 方法,但允许子 forms 使用 C# WinForms 移出父表单? 谢谢!

通常对于这种情况,您会使用“对接”功能。 在 Visual Studio 本身中也是如此。 通过这种方式,用户可以非常轻松地隐藏/显示 forms。

Visual Studio 不附带这样的 package,但是有免费的库。 例如,查看http://sdock.codeplex.com/

你可以做任何你想做的事。

forms之间可以建立父子关系。 或者,如果您愿意,您可以在主窗体关闭时明确关闭另一个 forms。

大多数系统正在远离 MDI(例如 Office),因此即使您有多个 forms,我也可能会使用带有 SDI 样式接口的 go。 MDI 往往没有很好地利用屏幕空间,大多数现代用户不习惯处理它的一些怪癖。

我曾经使用过一些 MDI 应用程序并尝试过类似的东西。

我从经验中学到了一些东西,你应该在决定之前考虑一下。

我注意到 MDI 的一件事是 forms 和控件的绘制速度似乎比常规的 forms 慢一些。 所以当你点击一个链接/按钮并抛出一个新的子窗体时,你可以看到它在屏幕上直观地绘制了新的子窗体,这使你的应用程序看起来很慢。 这已经在大量硬件/操作系统组合和测试应用程序上进行了测试,这些应用程序除了打开一个带有一些控件的表单之外什么都不做。

关于 MDI 的另一件事是您的孩子 windows 将包含在父 window 中,这适用于某些应用程序,但对其他人来说很烦人。

MDI 的另一个怪癖是,如果您有这样的需要,您不能使用 window 透明度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM