问题标签 [mdichild]

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 回答
5104 浏览

c# - C# Windows 窗体:Mdi 父子窗体问题

我有一个设置为 Mdi 容器的父表单。我从父表单中的菜单栏单击加载了一个名为 Plot 的子表单。代码是:

这很好用,除了我有以下问题:

  1. 有什么办法可以强制子窗体保持在中心。目前我可以在容器内拖动它。我想阻止用户移动它。此时我能想到的唯一方法就是让孩子无边界,但我不确定这是否可行。

  2. 有什么办法可以使子窗体模态?是的,我知道我可以将子表单设为模态,但随后它将不再包含在我想要的父表单中。有没有办法在子窗体处于活动状态时禁用父控件?目前我可以打开子表单的多个实例,但我希望任何时候都只有一个实例。

  3. 我在父表单上有一些标签,标签总是位于子表单的顶部。有什么方法可以强制子窗体位于最顶层?我使用了 TopMost,这似乎不起作用。

感谢您提供的任何帮助。

0 投票
1 回答
1300 浏览

vb.net - VB.NET MDI 儿童只关注标题栏点击

可以想象单击 MDI 子窗体中的任何位置(或任何控件)将聚焦该窗体。但是在我的应用程序中,我只能通过单击其标题栏来聚焦 MDI 子项,这是用户的异常行为。我的表单充满了控件或面板,所以我没有“点击表单”的奢侈。但是单击其中的任何位置都应将其聚焦。

尽管似乎其他人也遇到了这个问题,但我一直无法找到解决此问题的方法。

0 投票
2 回答
1758 浏览

c# - 在具有唯一标识符的 MDI 表单中打开子表单的多个实例

在我的应用程序中,我希望能够在具有唯一标识符的情况下多次打开表单的新实例作为孩子。

目前我喜欢这样:

我目前有两个问题:

  1. 怎么可能从 MDIForm (mainForm) 我可以通过当前在主窗体中打开的子窗体的 Text 属性以编程方式执行诸如 BringToFront 或 Close 之类的操作
  2. 我不应该是一个天才发现这种子表单的唯一命名方式不起作用。Console #1如果我打开 5 个子表单(相同的表单),它们的编号会像Console #5. 但是,如果我关闭假设Console #4并且如果我打开一个新表单(相同的表单!)它将被命名Console #5,那么我将有两个具有相同名称的表单。如果可以解决此问题,那么对于用户可区分的表单将非常有用。

在这种情况下期待您的提示!

0 投票
2 回答
4846 浏览

c# - 如果另一个表单正在其 MDI 父级中运行,如何从子表单中检查?

我有一个 MDI 表格。如果另一个表单正在运行,我想在此表单的正在运行的子项中检查。就像是:

MyForm2我要查找的表单的名称(类名)在哪里。编译器会说“此时类名无效”。

如何正确执行此操作?请注意,我可以在那个时刻运行多个“MyForm2”实例(嗯,使用不同的实例名称!)

0 投票
5 回答
48948 浏览

c# - 最大化 MDI 子窗体

我正在开发旧版 WinForms MDI 应用程序,并且在使子表单按我想要的方式运行时遇到了一些麻烦。我的目标是让子窗体始终最大化(停靠)。

问题是,即使我设置MaximizeBoxfalse最大化/调整大小按钮出现在 MDI 工具条中并让用户调整(取消停靠)子窗体的大小。避免这种情况的唯一方法是设置ControlBoxfalse,然后关闭按钮消失(这不是我想要的)。

我已经尝试在FormBorderStyle触发调整大小事件时使用固定并最大化子表单,但我的方法都没有奏效。

有没有我错过的超级秘密财产,或者这是不可能的?

提前致以最诚挚的问候和感谢

更新

我写了一个低俗的方法(感谢@rfresia)来处理我的孩子表单,它可能会帮助遇到同样问题的其他人:

0 投票
2 回答
11215 浏览

vb.net - 在 VB.NET MDI 窗体中打开外部应用程序

我需要在 VB.NET MDI 窗体中打开一些外部应用程序,例如 notepad.exe,并且我需要确保始终只有一个副本在运行。

我使用了下面的代码,但它完全没有任何作用。它给出了错误 SetParent is not declared and findWindow is not declared

这是我用来验证只有一个实例正在运行的代码

此代码正在打开 notepad.exe,但它不检查以前的实例。所以每次我点击按钮它都会打开一个新的记事本

0 投票
4 回答
4332 浏览

c# - 未为 MDI 子窗体调用 FormClosing 事件

我试图在打开一个新公式时关闭一个公式。关闭公式时,我想在关闭事件中处理一些特殊逻辑。但是关闭事件永远不会被调用,无论是在 FormClosing 还是在 Closing 事件中,也不是在抽象基类中,也不是在给定的手动附加事件中form_FormClosing

当我通过单击 x 手动关闭表单时,所有事件都会正常触发。调用该Close()方法失败。

你有一些建议来解决我的问题吗?

MdiParent:

抽象的通用 mdi 子窗体:

0 投票
2 回答
1816 浏览

c# - 当用户按下子窗体上的最大化按钮时如何调整 mdichild 窗体的大小

我只想让我的 mdichild 表单在按下最大化按钮时调整大小,并且它不会停靠在父表单上。

我的初始 MDIChild 大小是 100,100,当我按下最大化按钮时。我只需要将 MDIChild 的大小调整为 500,500。我的问题是,当我按下最大化按钮时,它会停靠在 mdiparent 表单中并填充 mdiparent 表单的所有剩余空间。

顺便说一句,我的 MDIParent 大小是 800,800,因此 MDIChild 不会超出 MDIParent。

0 投票
1 回答
2732 浏览

c# - WinForms MDI 子窗体

我有一个窗体 frmMain 设置为 MDI Parent。在其中,我可以打开另一个窗体 frmSearch 作为父窗体中的子窗体。但是,我遇到的问题是,我现在希望用户能够通过单击 frmSearch 打开第三个窗体 frmCase,并在父窗体 frmMain 内打开第三个窗口。

到目前为止,我在 frmMain 上有:

在子窗体 frmSearch 上:

但是第三种表单(frmCase)在父表单(frmMain)之外打开我知道我需要设置frmCase的MDIParent属性但我不知道如何引用已经打开的frmMain。

任何意见,将不胜感激。

0 投票
1 回答
6066 浏览

vb.net - 如何将 MDIChild 表单定位在 MDIParent 的右下角?

看起来像一个愚蠢的问题,但我尝试了以下(其中“我”是一个 MDIParent 形式):

但它不起作用。

想法?