问题标签 [non-modal]
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.
winforms - 将非模态子 Windows.Forms.Form 添加到阻止子接收焦点的主窗体的问题
前言(可能会在发布答案后被删除)。这是一个我在网上任何地方都找不到答案的问题(经过几天的搜索)。我自己通过试错找到了答案,但我对主题 - 形式并不特别熟悉,所以我的解决方案可能不是最好的,甚至不是正确的。
我使用 Windows 窗体创建了一个小型应用程序。应用程序进行一些(冗长的)数据处理,它需要第二个单独的窗口来显示(持续的)错误。为此,我使用了(简单的)非模态形式。
结构相当简单:
这里的基本思想是NonModalInfo
表单用于mainForm
向用户显示日志记录和/或错误信息。正如我所拥有的,上面的结构完美地工作。问题是我在上面评论为Then, this critical line:
. 没有那行 - 这是我最初编写代码的方式 - 代码几乎可以工作:非模态表单被打开、显示、更新等。问题是非模态表单永远无法获得焦点:任何尝试单击非模态表单以使其聚焦导致mainForm
闪烁并保持焦点。这种行为正是人们在mainForm
模态打开时所期望的,因此非模态表单无法获得焦点。
现在,mainForm
正在打开模态ShowDialog()
(子对话框应该能够接收焦点。此外,简单地确保成员数据元素m_infoBox
是用 的某个实例初始化的NonModalInfo
,那么行为是不同的:子窗体将被赋予焦点,没问题。从外观上看,在m_infoBox
显示 之前使用非空实例初始化的情况下mainForm
,mainForm
似乎显示为非模态(尽管已显示ShowDialog()
)。
我的问题是,为什么我需要确保mainForm
' 的成员m_infoBox
是用非空实例初始化的?有什么方法可以构造mainForm
和“显示”它,这样当我构造、添加和显示非模态孩子时,孩子可以接收焦点?哪里有这方面的文件?上面的代码实际上是正确的方法吗?谁能解释引擎盖下发生了什么?
编辑:事实上,情况比这更复杂。如果子非模态窗体在显示父级时可见,则父级将是“模态”的,子级将无法获得焦点。如果子窗体在显示父窗体之前已将其所有者设置为父窗体,则在尝试显示父窗体时会引发异常。我找不到关于所有这些问题的像样的文档。
ios - 如何像这样在 IOS 中实现非模态对话框(附图)?
问题:如何最好地在 IOS 中实现这样的非模态对话框(附图)?允许仍然拖动移动地图并选择(长按)另一个位置,然后在弹出的“非模态”对话框中填充该详细信息。对话框可以具有“删除”/“添加到收藏夹”等功能。
澄清:
- 我在问如何在我标记为“非模态弹出窗口”的图像中实现对话框
- 所以对于 iPad/水平常规情况,我突出显示对话框将与右侧的 ViewController 相关联,因此在这种情况下,用户仍然可以在 VC2 中拖动地图,但也可以访问/使用 VC1
一些笔记是我的思考:
- UIViewController.present 不能在这里使用,因为它是模态的吗?如果可以使用什么设置来使其正常工作?
- 您不建议使用(a)单独的 UIViewController 来实现,并使用手动添加 UIViewController 的方式显示它,或者(b)在这种情况下将其保留为 UIView 更好吗?在任何一种情况下,都必须以编程方式进行任何调整?
qt - QDialog 中的 Escape 仅在模态模式下有效?
Esc在非模态模式下对我的对话框不起作用,事件将转到底层窗口。只添加
到创建对话框使Esc键工作并调用reject()
插槽。Esc进入/退出非模态对话框是否正常或可能?
parent-child - 自定义无模式对话框类不可见
我想制作一个带有标签和 QDialogButtonBox 的自定义非模态对话框类。我看过很多帖子,但似乎没有一个是真正的。我的代码如下。两个问题: 1. 为什么对话框类不显示任何内容?2. QDialogButtonBox 的连接看起来正确吗?
任何帮助,将不胜感激。谢谢!
wpf - wpf确定对话框显示类型?
我在一个 WPF 项目中有一个窗口,它在几个不同的地方使用。根据用途,我希望能够将其显示为模态(ShowDialog())或非模态(Show())。当在 UI 上单击特定按钮时,如果它是非模态的,它应该触发一个事件,但如果它是模态的,则返回一个对话框结果。
我的问题; 有没有办法在窗口代码中确定它是如何显示的?我知道如果您尝试设置对话框结果(如果它是非模态的)则会出现异常,但我宁愿不尝试捕获异常。
我可以设置一个简单的布尔属性,我可以手动设置它来告诉我它是什么。不难,所以如果这是唯一的方法,我可以这样做,但是不必每次都记住设置该值会很好。
mfc - MFC 对话框显示在任务栏中
我有一个使用来自两个 DLL 的对话框的应用程序。两个 DLL 中的对话框代码几乎相同:
- 两个对话框在 RC 文件中具有相同的样式:
DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
. - 两个对话框都使用 显示
ShowWindow(SW_SHOW)
。 - 这两个对话框都是按需创建的,而不是在应用程序启动时创建的。
- 两个对话框都有一个 NULL 父级。
- 两个对话框都继承自 CDialog。
唯一的区别是:
- 在对话框 A 中,
AFX_MANAGE_STATE()
在对话框构造函数之前调用,而对于对话框 B,它在构造函数的开头调用。
我认为这些差异中的任何一个都不会产生任何影响,但是,当我显示对话框时,对话框 A 在任务栏和对话框 B 中没有图标,此外,将主窗口放在前面会带来对话框A 在前面(反之亦然),而对话 B 独立运行。
我想让对话框 B 的行为类似于对话框 A。谁能告诉我为什么存在这种行为差异以及如何解决它以使对话框 B 的行为与 A 相同?
我知道您会喜欢示例代码,但这需要一些时间(我没有)来制作。现有的代码都是公司商业的,也是一个巨大的应用程序,从中提取关键部分确实非常困难。
** 更新 ** 如果我::AfxGetMainWnd()
在调用之前调用对话框 B 的委托人,我AFX_MANAGE_STATE()
可以获得指向主窗口指针的指针。耶!当我将它传递给Create()
时,程序崩溃了。嘘!
看起来我无法将主窗口设置为对话框 B 的所有者,我认为这可以解决我的问题,大概是因为对话框 B 在 DLL 中。我不明白为什么这适用于对话 A。
delphi - 显示异步“等待”窗口
在 Delphi VCL 应用程序中,我想创建一个“等待”消息窗口,因为这是一个耗时的过程(本例中的一个大循环)。
在开始耗时的过程之前,我尝试了以下要执行的操作。
- 创建一个包含消息的简单窗口的新形式。
- 使用 messagedlg 创建一条消息。
- 甚至更改主表单上的 TLabel.Caption(执行耗时过程的表单)。
在 {1} 和 {2} 的情况下,弹出表单出现在耗时的过程开始之前,但它们的组件仅在完成后才绘制。
情况 {3} 保持执行,直到模式对话框关闭。
如果{4}在耗时的过程完成后标题会发生变化。
如何异步创建消息,使其完全绘制而不等待其父进程?
javascript - 有非模态对话框时如何专注于主页输入元素?
我的情况是:非模态对话框内部有输入,点击外部时不关闭
当非模态对话框打开时,我无法专注于主页中的输入。当我单击主页中的输入时,焦点会跳转到对话框中的第一个输入
我试过 mainPageInput.focus() 不工作。我也先尝试了 dialogInput.blur() 然后 mainPageInput.focus() 仍然无法正常工作
它们的 tabIndex 默认为“0”
javascript - 如何显示非模态/非模态 HTML/JavaScript 对话
我从 w3schools 上的示例创建了一个模态对话。但是我一直无法找到有关如何使其成为非模态的指导。即是否可以显示对话并且我仍然可以在后台按下链接?
实际上,我想要实现的是允许对话内的链接是可点击的,并允许其后面的主页上的 JavaScript 对这些事件做出反应。