我有一个模态窗口弹出窗口,所以我的应用程序的用户可以编辑一些东西,然后他们保存它并关闭窗口。当他们关闭弹出窗口时,我的父(主)窗口被发送到我桌面上所有其他应用程序的后面,然后它立即被发送回前面。
知道为什么会这样吗?
答案 0 :(得分:2)
以您的主要形式:
Dim frmDlg as New FormDialogToShow
frmDlg.ShowDialog(Me)
主表单不应该发送到后面。子对话框将显示在父对象的顶部。如果没有所有者引用,主表单有时会被发送到后面。当您没有指定所有者表单时,会发生这种情况:
Dim frmDlg as New FormDialogToShow
frmDlg.ShowDialog()
Me.BringToFront
(答案与第一次相同)
答案 1 :(得分:0)
这段代码似乎解决了这个问题:
' When closing the subform
' ------------------------
sub_form.close()
main.focus()
sub_form.dispose()
执行此操作时,即使子窗体是模态窗口,我的主窗体也不会被发送到后面。
答案 2 :(得分:0)
在ShowDialog
行结束之前,你的模态形式是否以某种方式隐藏起来?这发生在我身上,并且能够通过从模态表单中删除Hide
调用来解决它。
我想我在这里读到的地方是因为Windows没有启用窗口将焦点发送到活动应用程序中,所以它会将焦点发送到下一个应用程序。
答案 3 :(得分:0)
我拼命地寻找类似问题的答案。我发现这个特别有用:
Private Sub Frm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
Prompting = False
Frm = Nothing
FrmPrompt.Close()
FrmPrompt.Dispose()
FMain.Activate()
End Sub
激活允许我的主表单不被发送到我打开的任何其他内容之后。