1

我有一个表单 ( frmMain) 以模态方式打开另一个表单 ( frmEdit)。

这反过来又打开了第三种形式 ( frmSelection) 模态。

我的问题是何时frmSelection关闭,frmEdit也关闭,但在我的代码中实际上没有关闭它。

注意FormClosingFormClosed事件在frmEdit

中的代码frmMain

Using edit as New frmEdit
    edit.ShowDialog
End Using

中的代码frmEdit

Private Sub btnEditSelectionCriteria_Click(sender As Object, e As EventArgs) Handles btnEditSelectionCriteria.Click
    Using sel As New frmSelection
        sel.ShowDialog
    End Using
End Sub

Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
    Me.Close ' this is not called (breakpoint is not hit)
End Sub

Private Sub frmEditTask_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    'This fires when OK button clicked in frmSelection
End Sub

中的代码frmSelection

Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
    Me.Close ' this causes the FormClosing event to fire in frmEdit
End Sub

如何追踪关闭表单的原因?我认为可能会引发异常,但我检查了在 Common Language Runtime Exceptions 中引发的异常,但无济于事。

4

1 回答 1

1

我找到了这个挠头的来源 - 感谢@Idle_Mind 的指针: -

我的按钮btnEditSelectionCriteriaDialogResult属性设置为Cancel

这实际上是一个陷阱。如果您在窗体上创建一个按钮,然后将CancelButton窗体的属性设置为此按钮,它会将该按钮的DialogResult属性更改为Cancel

这就是我所做的,然后我将取消按钮复制并粘贴到btnEditSelectionCriteria,这保留DialogResultCancel

于 2013-06-25T15:52:39.690 回答