0

I have a modal window popup so a user of my application can edit some stuff, then they save it and close the window. When they close the popup window, my parent (main) window gets sent to the back of all other applications on my desktop, and then it immediately gets sent back to the front.

Any idea why this would happen?

4

4 回答 4

2

在您的主要形式中:

   Dim frmDlg as New FormDialogToShow
   frmDlg.ShowDialog(Me)

主表格不应该被发送到后面。子对话框将显示在父对话框的顶部。如果没有所有者引用,主窗体有时会被发送到后面。当您不指定所有者表单并且发生这种情况时:

   Dim frmDlg as New FormDialogToShow
   frmDlg.ShowDialog()
   Me.BringToFront

(答案和第一次一样)

于 2013-10-11T15:04:38.520 回答
1

ShowDialog您的模态表单是否在行结束之前以某种方式隐藏起来?这发生在我身上,并且能够通过Hide从模态表单中删除调用来解决它。

我想我在 SO 的某个地方读到了这种情况,因为 Windows 没有启用的窗口来将焦点发送到活动应用程序中,因此它将焦点发送到下一个应用程序。

于 2013-12-16T08:54:07.580 回答
0

这段代码似乎解决了这个问题:

' When closing the subform
' ------------------------
sub_form.close()
main.focus()
sub_form.dispose()

这样做时,即使子表单是模态窗口,我的主表单也不会被发送到后面。

于 2013-10-11T15:06:35.730 回答
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

激活允许我的主要表单不会被发送到我打开的其他任何东西后面。

于 2018-03-22T18:56:51.403 回答