2013-04-08 63 views
0

我有一個父窗體,稱爲A型。這將創建子窗體的OnFormClosing事件,可以說,所謂的形式B.檢測從子窗體

一個訂閱,形成B的事件的FormClosing,使基於這種變化行動。

我想知道的是,如何檢測窗體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 

任何意見/建議?

回答

0

通常該方法的參數告訴你一切。探討

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

,你應該能夠確定誰被檢查出sender參數導致此。

+0

我有但問題在於,它傳回發件人的對象是整個窗體。我相當肯定我做錯了什麼...... – user1708468 2013-04-08 08:41:59

+0

當你按下'取消'或'確定'時,你必須調用方法,是嗎?因此,如果這些事件具有「Click」事件,則可以將對象設置爲「取消」或「確定」的某個狀態,並且如果單擊「X」它可能是「空」或任何其他事物,所以您知道它是不是'好'。這個怎麼樣?然後你可以在'Closing'方法中讀取狀態? – 2013-04-08 08:46:50

+0

謝謝。這很有道理。 – user1708468 2013-04-08 08:57:32

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