从子表单中检测OnFormClosing事件

时间:2013-04-08 08:25:44

标签: .net vb.net winforms formclosing

我有一个父表单,称为表单A.这会创建一个子表单,比如称为表单B.

对于A,订阅表格B的FormClosing事件并根据此操作进行更改。

我想知道的是,如何检测表单B中的哪个控件导致FormClosing事件触发。我希望代码在按下“X”或“取消”按钮时表现一种,如果按下确定按钮则表示另一种方式。

代码如下所示:

Private Sub btnAddSections_Click(sender As Object, e As System.EventArgs) Handles btnAddSections.Click
    Cursor = Cursors.WaitCursor
    Dim frm As New dlgAddPartsMartixSection(m_intMatrixId)
    AddHandler frm.FormClosing, AddressOf btnAddSectionsRefresh
    frm.Show()
    Cursor = Cursors.Default
End Sub 

 Private Sub btnAddSectionsRefresh(sender As Object, e As FormClosingEventArgs)
    dgvParts.DataSource = Nothing
    btnAddParts.Enabled = False
    dgvParts.Refresh()
    Me.LoadPartMatrices()
    dgvMatrices.Rows(m_intMatrixLocationId).Selected = True
    Me.LoadPartSections(m_intMatrixId)
End Sub

任何想法/建议?

3 个答案:

答案 0 :(得分:0)

通常方法的参数会告诉你一切。调查

Private Sub btnAddSectionsRefresh(sender As Object, e As FormClosingEventArgs)

您应该可以通过查看sender参数来确定是谁造成的。

答案 1 :(得分:0)

您可以使用DialogResult属性来确定表单B的关闭方式。

答案 2 :(得分:0)

试试此代码

     Private Sub btnAddSectionsRefresh(ByVal sender As Object, ByVal e As FormClosingEventArgs)
           if  Me.ActiveControl.Text = "X" then
.....
......
elseif Me.ActiveControl.Text="Cancel"
.....
.....
elseif Me.ActiveControl.Text ="Ok"
.....
...
        End Sub