2

我正在创建一个包含 4 个表单的 Visual C# WinForms 应用程序:

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

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

4

3 回答 3

4

通常对于这种情况,您会使用“对接”功能。在 Visual Studio 本身中也是如此。这样用户可以很容易地隐藏/显示表格。

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

于 2011-04-29T20:29:38.580 回答
2

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

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

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

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

MDI 的另一个怪癖是不能使用窗口透明度,如果你有这种需要的话。

于 2011-04-29T21:37:11.383 回答
2

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

您可以在表单之间建立父子关系。或者,如果您愿意,您可以在主窗体关闭时显式关闭其他窗体。

大多数系统正在远离 MDI(例如 Office),所以我可能会使用 SDI 风格的界面,即使您有多个表单。MDI 往往没有很好地利用屏幕空间,大多数现代用户不习惯处理它的一些怪癖。

于 2011-04-29T20:29:25.067 回答