2015-08-05 2 views
1

У меня проблемы с доступом к методам доступа другого класса «SocketClient» в «Form2», но в «Form1» работает очень хорошо! Другими словами, я могу отправлять данные из «Form1» с помощью методов «SocketClient», но то же самое, что я не могу сделать из «Form2».Как использовать методы доступа к другим классам?

Как решить проблему?

Вот мой код:

"Form1"

Public Class Form1 

Public WithEvents C As New SocketClient 
Public Yy As String = "|SPLIT|" 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    C.Send("ref" & Yy & "data here") 

End Sub 
End Class 

"Form2"

Public Class Form2 

    Public frm1 As Form1 

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click 

    ' The error is here, don't sends data to server application 
     frm1.C.Send("ref" & frm1.Yy & "Name: " & TextBox1.Text) 

    End Sub 
    End Class 
+0

В чем проблема? Я предполагаю, что 'frm1' равно null, так как вы не показываете какой-либо код, где он инициализирован, но вы должны включать в себя любые сведения об ошибке и строку, которая встречается в вашем вопросе. – Mark

+0

@ Марк, я отредактировал мой вопрос. –

ответ

1

Если у вас есть Form1 в качестве основной формы, и вы создаете Form2 из этой основной формы попробуйте передать ссылку через конструктор:

Public Class Form2 
    Private frm1 As Form1 

    Public Sub New(mainForm As Form1) 
    Me.InitializeComponent() 
    frm1 = mainForm 
    End Sub 

End Class 

От главной формы (form1), вы бы передать ссылку:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim form2 As New Form2(Me) 
    form2.Show() 
End Sub 
+0

С базой по коду выше (или любым другим), как эта форма Form2 получает доступ к переменной или методу в Form1? –

+0

@JonasSilva Поскольку вы передаете ссылку Form1 в Form2 и сохраняете эту ссылку в переменной frm1. Если я понял ваш комментарий. Попробуй. – LarsTech