0

我有一个父表单,称为表单 A。这会创建子表单,可以说称为表单 B。

For A 订阅了表单 B 的 FormClosing 事件,并根据此操作进行更改。

我想知道的是,如何检测Form B中的哪个控件导致FormClosing事件触发。如果按下“X”或“取消”按钮,我希望代码以一种方式运行,如果按下 OK 按钮,则另一种方式运行。

代码如下所示:

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

有什么想法/建议吗?

4

3 回答 3

0

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

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

您应该能够通过检查sender参数来确定是谁造成的。

于 2013-04-08T08:28:36.090 回答
0

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

于 2013-04-08T08:28:57.453 回答
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
于 2013-04-08T09:20:10.240 回答