2013-04-08 5 views
0

У меня есть родительское форму, которая называется форма A. Это создает дочернюю форму, позволяет сказать, что называется форма B.обнаружение OnFormClosing события из дочерней формы

Для А выписывает сформировать событие FormClosing B и делает изменения, основанные на этом действие.

Что я хочу знать, как определить, какой элемент управления в Форме 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 

идеи/пожелания?

ответ

0

Обычно аргументы метода сообщают вам все. Исследовать на

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

и вы должны быть в состоянии определить, кто вызвал это, проверяя параметр sender.

+0

У меня есть проблема с, что объект он проходит назад, как отправитель является вся форма. Я абсолютно уверен, что я что-то делаю неправильно ... – user1708468

+0

Вы должны вызывать методы, когда вы либо нажимаете 'Cancel', либо' OK', не так ли? Поэтому, если у них есть «Click'-events, вы можете установить объект в определенное состояние для« Отмена »или« ОК », и если вы нажмете« X », это может быть« null »или что-то еще, так что вы знаете, что это было НЕ 'ОК'. Как насчет этого? Затем вы можете прочитать состояние в методе 'Закрытие'? –

+0

Спасибо. Это имеет смысл. – user1708468

0

Вы можете использовать свойство DialogResult, чтобы узнать, как форма B была закрыта.

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