问题标签 [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 投票
2 回答
2142 浏览

c# - 您如何为 MDI 客户区域中的拖动/拖放事件设置处理程序?

使用 C# 和 .Net 框架 2.0。我有一个 MDI 应用程序,需要处理拖动/拖放事件。我有一个停靠在我的应用程序左侧的列表,并且希望能够从列表中拖动一个项目并将其放在 MDI 客户区域中,并为该项目打开正确的 MDI 子项。我似乎无法弄清楚在哪里附加处理程序。我已经尝试附加到主窗体的事件和作为窗体一部分的 MdiClient,但是当我期望它们调用时,似乎都没有调用事件处理程序。

我也在使用 Infragistics 选项卡式 MDI 管理器,所以我不确定这是否会影响它。

0 投票
2 回答
171 浏览

collections - 在多个类上拉伸对象的好方法

我有一系列订单。我想访问数据库一次,检索订单,存储它们,然后能够通过多个表单访问这个集合。我知道在 asp.net 中,您可以使用 Application Object 或 Session Object 之类的东西,但是您如何在 win 表单应用程序中做到这一点?我正在考虑创建一个可以通过多个表单、类或任何地方访问的静态集合。这听起来对吗,甚至可行吗?

谢谢

0 投票
1 回答
799 浏览

.net - Winforms + MDI 儿童

在 WinForms 中,有没有办法以某种智能的方式指定 MDI 子窗口的初始起始位置?

我可以应用手动位置,或者让它居中父级,但这些选项都没有考虑到现有窗口。

我想知道是否有内置方法可以进行“智能安排”,或者我是否需要自己实现此代码。

作为旁注,有没有办法自动化平铺和级联视图?

0 投票
6 回答
1842 浏览

c# - MDI 的优点和缺点

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

我的实际问题是;MDI还有这些缺点吗?& 那些曾与 MDI 合作过的人,您遇到过哪些问题以及您是如何克服这些问题的?

谢谢你!

0 投票
1 回答
13877 浏览

c# - .Owner 属性和 ShowDialog(IWin32Window 所有者)之间的区别?

我认为可以通过.Owner属性或通过在重载方法ShowDialog(IWin32Window owner)中传递所有者来显式设置 winform 的所有者

我无法理解为什么这些方法在使用MDI 表单时表现出不同的行为。

我创建了一个 MDIParent 和一个 MDIChild。

我还有一个简单的 winform MyDialogBox,它在加载时显示其所有者。

方法 A - 在加载 MDIChild 我有以下代码,这导致 MyDialogBox 的所有者被设置为MDIChild

方法 B - 或者,在 MDIChild 的加载方法中,我有以下代码,这导致 MyDialogBox 的所有者被设置为MDIParent

我还在这里阅读了以下内容

只有 MDI 父窗体可以拥有另一个窗体,无论是 MDI 子窗体、模式对话框还是父窗体设置为 Owner 参数的窗体。

如果是这样,方法 A 根本不应该工作,不是吗?

我错过了什么?为什么方法 B 不将所有者设置为 MDIChild ?

0 投票
3 回答
2646 浏览

eclipse - 如何让 Eclipse 退出 MDI 模式?

有谁知道使 Eclipse 成为 SDI 应用程序而不是 MDI 应用程序的方法?SDI - 单文档界面,每个窗格都是自己的窗口 MDI - 多文档界面,所有窗格都卡在一个“主”窗口中。

Eclipse 是一个 MDI 应用程序。所有的小窗格(如调用堆栈、变量查看器等)都是一个主 Eclipse 窗口的一部分。我不想让所有的窗口都卡在一个主“eclipse”窗口中,而是希望它们都是它们自己的自由浮动窗口。

0 投票
5 回答
3392 浏览

.net - MDI 表格“蠕变”(MDI 窗口中的位置变化)

我有一个 VB.NET MDI WinForms 应用程序。我的用户一直在抱怨表单蠕变(正如他们所说的那样),这是每次您在主 MDI 窗口中打开特定表单时,它会在之前加载的位置略下方和右侧打开 - 即它从窗口的左上角并向下移动到右下角。

我不得不同意他们的观点,这非常令人恼火,有什么办法可以防止这种情况发生吗?加载表单的代码是:

我可以通过将表单启动位置设置为“手动”来解决这个问题,但它们只是在屏幕左上角直接打开。

任何其他 SO 用户都遇到过这个问题?

0 投票
2 回答
1072 浏览

c# - Glass look for MDI windows under Vista

I am developing a winforms MDI application in C# in VS 2008. I have noticed that the MDI forms don't have the glass look under Vista.

Is this by design? Is there a simple way to get the glass look for these windows?

0 投票
3 回答
3857 浏览

c# - 寻找适用于桌面应用程序的 Visual Studio 工具箱样式导航

我正在开发一个使用 MDI 应用程序和侧面导航面板的项目。目前它是一个 ListView。但是,我想将其重新设计为类似于 Visual Studio 2008 中的工具箱。

如果这需要覆盖默认的绘制方法,那么如果您可以提供一些关于如何使用绘制方法的良好参考,这也会有所帮助,因为我目前没有任何使用它的经验。

提前致谢。

0 投票
5 回答
1646 浏览

delphi - 如何优雅地退出在 Delphi 中执行代码的 MDI 表单

我有一个用 Delphi 2007 编写的 MDI 应用程序。

如果用户在执行代码时退出其中的表单,则会导致异常,因为代码正在尝试更新组件或使用已随表单释放的对象。

无论如何我可以判断代码是否在退出事件中执行,或者是否有处理这种情况的标准方法?

更新更多信息

异常通常发生在以下情况。

子 mdi 表单上的一个按钮被按下,这将激活表单中的一个功能,该功能将进入数据库并检索数据,然后它将重新格式化并将其显示在表单上的可视组件中(可用 TListView )。

如果代码需要很长时间执行(例如,如果有很多数据要处理),用户将失去兴趣并单击关闭按钮(代码的速度正在努力避免这种情况)。

即使它所属的表单已被释放,函数内部的代码仍在执行(代码位于表单的私有部分),现在当它尝试更新它们不再存在的可视组件时(因为它们被释放了表单),它会引发异常。

发生这种情况时,子表单中的代码可以在循环中使用,循环记录并相应地更新列表视图,循环包含看起来像这样的代码

其他代码示例

fromClose 事件看起来像这样

DoFormFree 是主 mdi 父窗体中的一个函数,看起来像这样

由于各种原因,所有表单都存储在一个列表中,并且所有子表单都扩展了 TBaseForm 类。

理想情况下,我想要一种方法来判断表单中的代码是否正在执行,并防止用户关闭表单,或者在代码完成之前隐藏它,因为在某些情况下,它可能会生成报告并更新为状态面板发生异常,在这种情况下,报告将不完整。

因为所有表单都是 TbaseFrom 的子类,所以某种全局方式这样做是理想的,所以我可以将代码添加到基本表单并让它适用于所有下降的表单。