2013-12-11 4 views
0

Это моя проблема ...
У меня есть форма (Form1), которая вызывает другую форму (Form2). В этом Form2, когда я закрываю форму, я хочу вызвать метод Form1, чтобы изменить значения из компонентов Form1. Метод вызывается, но значения компонентов Form1 не меняются ... Я предполагаю, что это происходит потому, что когда я вызываю метод Form1 из Form2, он создается anothed экземпляром Form1, а метод не выполняется в Form1, из которого Я называю Form2

Form1 Form2 вызоваИзменение TextBox Текст формы1 Из формы2

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click 
    frmForm2.ShowDialog() 
End Sub 

Form2 вызова метода Form2

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click 
    frmForm1.ChangeValues() 
End Sub 

ответ

2

Пройди оригинальный экземпляр Form1 конструктору Form2, как это:

Public Class Form2 Inherits Form 
    Dim theForm1 As Form1 
    Public Sub New(form1 As Form1) 
     theForm1 = form1 
    End Sub 

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click 
     ' Call instance of Form1 passed in to change the values here 
     theForm1.ChangeValues() 
    End Sub 
End Class 

Сейчас в Form1, при создании Form2 экземпляра вам нужно передать экземпляр Form1, как это:

Dim frmForm2 As New Form2(Me) 
frmForm2.ShowDialog() 

Примечание: Me является ссылка на текущий класс, Form1 в этом случае.

+0

Большое спасибо ... Это очень хорошо работает. – user1600801

0

Если вы не передаете все значения обратно в ChangeValues ​​(), а затем просто называют его после линии ShowDialog(). Тогда Form2 не нужно знать о Form1 вообще ...

Form1 Form2 вызова, то обновление сам потом:

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click 
    frmForm2.ShowDialog() ' <-- code stops here until frmForm2 is dismissed 
    Me.ChangeValues() ' <-- we're already here, update the values! 
End Sub 
Смежные вопросы