2016-09-27 2 views
0

У меня три формы; Formone Mdi form, Formtwo non Mdi form и Formthree ребенок Formtwovb.net call подпрограмма из формы3

Я хочу, когда Formthree закрывается, чтобы вызвать подпрограмму (RefreshData()) в Formtwo, это то, что у меня есть, но не работает. Благодаря

 Dim formone As New MainWindow 
     Dim formtwo As New AppFormData 
     Dim formthree As New UpdateAppForm 
     formtwo.MdiParent = Me.MdiParent 
     formtwo.RefreshData() 
     Me.DialogResult = Windows.Forms.DialogResult.OK 
+0

'Не работает' является наименее полезным способом описания проблемы. Пожалуйста, прочитайте [Ask], потому что этот вопрос не работает. – Plutonix

+0

@Plutonix. У меня есть TextBox в formtwo, который показывает количество записей, я ожидаю, что при вызове RefreshData() TextBox должен показать изменения. Вышеуказанный метод не показывает никаких изменений, т. Е. Ничего не происходит. – Sandet

ответ

0

Во-первых, вы убедитесь, что formtwo «s RefreshData() объявлен как Public, поэтому он может быть доступен с различной форме, а не в форме, где он был создан.

Как:

Public Sub RefreshData() 
... 
End Sub 

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

Private Sub formthree_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
    formtwo.RefreshData() 
End Sub 
+0

. Спасибо Crush Sundae. RefreshData (form) publict уже имеет значение. Я хочу вызвать refreshData(), например, когда я вставляю данные в базу данных с помощью формы three, а затем вызываю RefreshData () и, наконец, закрыть форму. Цель RefreshData() - обновить количество записей в TextBox в форме. – Sandet

+0

Итак, что еще кажется проблемой? –

+0

он не обновляет TextBox и не показывает ошибок. Однако, если я установил форму запуска в форму Visual Studio, она работает. если форма установки formone, которая является формой Mdi, она не работает. Спасибо – Sandet

0

Лучшим дизайном будет использование событий. Этот подход будет изящно работать, если вы создадите Formthree как дочерний элемент любой другой формы, поскольку он не зависит от этой родительской формы. Объявите событие в Formthree и потребляйте его в родительской форме, то есть Formtwo

Public Class Formthree 

    Public Event CallMethod() 

    Private Sub Formthree_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed 
     RaiseEvent CallMethod() 
    End Sub 

    . 
    . 
    . 

End Class 

Public Class Formtwo 

    Private WithEvents frm3 As Formthree 

    . 
    . 
    . 

    Private Sub frm3_CallMethod() Handles frm3.CallMethod 
     RefreshData() 
    End Sub 
End Class 
Смежные вопросы