问题标签 [mdi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
5167 浏览

user-interface - MDI还有地方吗?

尽管 MDI 被认为是有害的,但一些应用程序(甚至是 MS Office、Adobe 应用程序)仍然以纯粹的形式使用它,或者将其作为与选项卡式/IDE 式界面的混合体使用。

MDI 接口是否仍然适用于某些应用程序?

我正在考虑一个应用程序,其中一个通常一次处理多个文档,并且经常希望有多个文档一边查看或在它们之间复制/粘贴。

一个例子是Origin,其中一个项目中有多个工作表和图形窗口;选项卡式或类似 IDE 的界面会因大量来回切换而更加不方便。

在mac上,一个应用程序有多个顶级窗口来解决这个问题是很自然和方便的,如果不使用MDI,Windows中的首选方式是什么?

0 投票
3 回答
9223 浏览

.net - 如何从 MDIChild 表单中正确显示对话框()?

我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......

我应该使用f.ShowDialog(mdiparent)吗?

在调用之前设置所有者有什么区别ShowDialog()

0 投票
1 回答
887 浏览

c# - C# 中的工厂模型,不使用默认构造函数

我一直在使用工厂模型来创建子表单以添加到 MDI 表单。这是我一直在使用的代码:

但是,出现了一种情况,我必须将整数参数添加到特定表单的构造函数中。我怎样才能改变它并让它反映它,同时仍然保持模式在它当前的易用性(或几乎)。

0 投票
8 回答
16360 浏览

c# - 添加或删除使用子表单检测的 MDI 表单

是否有一个事件可以用来判断子窗体是否已从 MDI 父窗体中添加或删除?

0 投票
6 回答
14568 浏览

.net - 在 VB.net 中将值从子级传递给 mdi 父级

我有一个简单的通讯录。该应用程序有一个主窗口,它是一个 mdi 表单。当使用“添加联系人”表单添加联系人时,我想在父窗口状态栏中显示一条简单的反馈消息,说明联系人已成功添加。

这是子加载:

问题是,由于父级实际上是一个 mdi 父级,并且“添加联系人”表单是使用.Show()而不是启动的.ShowDialog(),所以我无法存储任何可以由启动 Sub 用于执行操作的返回值。

有没有办法将这个孩子的值传递给 mdi 父母?这是子窗体做它的东西:

PS显然,我在标记事物方面相当糟糕......所以任何想要重新标记这个问题的人都非常受欢迎。

0 投票
3 回答
1914 浏览

delphi - 如何防止 Delphi MDI 应用程序显示最大化子项的标题

如何防止 Delphi MDI 应用程序在 MDI 父窗体的标题中显示当前最大化的 MDI 子窗体的标题?

先感谢您!

0 投票
3 回答
1767 浏览

c# - 有什么新的希望吗?使窗口成为 MDI 子项

获得了一些 C# 窗体/控件,可以从 Winforms MDI 应用程序中 Winform 上的 C# 控件或 PowerBuilder MDI 应用程序通过 COM 使用的相同 C# 控件调用。

我一直在使用 WinAPI 调用 SetParent 将表单附加到 MDI。

  1. 它在两种环境中都有效(或似乎有效)。
  2. 它让子窗口拥有自己的 WindowState(正常,最大化),而不是承担已经打开的子窗口的状态(这真的很痛苦)。

假设控件称为 T。控件 T 上的代码调用表单 D。

控件 T 在表单 X 上。
控件 T 也在表单 Y 上 。

在 .Net 中一切都很好,并且表格 D 保留在 MDI 中。

在 PB 中:
控制 T 在 PB 控制 PX 上。控制 T 也在 PB 控制 PY 上。

对于 PX,一切都很好。
然而,对于 PY,有一个问题 - 表格 D 似乎没有成为 MDI 子 - 它可以超出应用程序并具有任务栏图标。我强调这是使用与有效的对象相同的对象。SetParent 实际上是同一行代码。

进一步的研究表明,SetParent 并不真正适用于正确的 MDI childing——但这没关系(ish)因为我们不需要合并菜单等。

有趣的是,发现虽然 SetParent 似乎“工作”,但如果您尝试 GetParent,您将无法找回句柄......

parentHandle 将始终为 0....

有没有办法让表格 D 在所有情况下都能正常工作?我自己的研究并不乐观。我真的不想回去将我的表单重写为控件并让 PowerBuilder 管理它们 - 主要是因为每个表单可以有多个实例并且 PowerBuilder 必须处理它(而不是控制器类/基类我已经在 .net 应用程序中进行操作)。

我可以强调.Net 中没有问题吗,问题只出现在 PowerBuilder 应用程序中

0 投票
1 回答
555 浏览

.net - .Net MDI 表单中的 ArrangeIcons 有什么用

MdiLayout 枚举有一个名为 ArrangeIcons 的值。如果这被发送到 MDI 父窗体的 LayoutMdi 方法,则“所有 MDI 子图标都排列在 MDI 父窗体的客户区域内。”

当我尝试将示例 MDI 表单放在一起并将此值传递给 LayoutMdi 时,似乎没有发生任何事情。

什么是 MDI 子图标以及 ArrangeIcons 的值是什么?

0 投票
1 回答
504 浏览

mfc - 用户界面:切换 MDI 框架顶部状态的最佳方式?

我维护一个使用 Frame Windows 作为文档视图的 MFC (VC6) MDI 应用程序。一次只有一个文档,但有多个 MDI 框架,每个框架都有不同的文档数据视图。

最近出现了一个请求,即能够将这些框架窗口中的一个保持在其他框架窗口之上,同时能够与背景窗口进行交互。

  • 一个想法是在框架的标题栏中添加一个“固定按钮”。在我的研究中,我发现每个实现都使用位图而不是例如 CButton 对象。一旦使用默认灰色以外的窗口颜色,更不用说 UI 主题,这就会开始变得难看。

  • 框架窗口菜单中的一个选项(左键单击标题栏中的窗口图标时出现的东西)是可能的,但我正在寻找对用户更明显的东西。

设置此框架窗口的顶部状态还有哪些其他可能性?

更新

我决定采用 Uli 建议的解决方案,因为该解决方案适用于 XP 主题。不幸的是,这直接引出了我的下一个问题:我怎样才能真正让框架窗口保持在顶部?

0 投票
2 回答
3164 浏览

mfc - 如何使 MDI 子窗口保持在其兄弟窗口之上?

这个问题与我之前的问题有关。

我有一个 MFC (VC6) MDI 应用程序,它有几个 MDI 子窗口充当一个文档的不同视图。

是否可以将其中一个框架设置在其他框架之上?
我试过打电话

来自 CMDIChildWnd 但似乎都不起作用。