функция вызова в vb.net против 2015 - PullRequest
0 голосов
/ 09 мая 2018

У меня есть Form1 и Form2. Я хочу вызвать функцию в Form1 из Form2 Но это не работает. Я использую Visual Studio 2015.

Public Class Form1
Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim form As New Form2
    form.Show()
End Sub

Public Sub Test()
    TextBox1.Text = "Hello"
End Sub
End Class

Public Class Form2
Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim form As New Form1
    form.Test()
End Sub
End Class

1 Ответ

0 голосов
/ 09 мая 2018

Что происходит, вы создаете еще один Form1 с помощью нажатия кнопки Form2, это не ваша родительская форма. Вам нужно назначить владельца Form2 при его создании, чтобы потом можно было вернуться к нему. Примерно так:

Form1:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim form As New Form2
        form.Show(Me) 'I am assigning Form2's Owner here
    End Sub

    Public Sub Test()
        TextBox1.Text = "Hello"
    End Sub

End Class

Form2

Public Class Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        CType(Me.Owner, Form1).Test() 'Casting Form2's Owner to Form1 to access your sub

    End Sub

End Class
...