Pues para lograr la comunicacion entre formularios debes de declarar miembros publicos en las respectivas clases, ya sean metodos o variables.
Te pongo un ejemplo hecho en VS 2008 donde se comunican 2 forms
Referencia:
El form1 contiene
un check box con nombre CheckBox1
un boton con nombre Button1
El form2 contiene
un text box con nombre TextBox1
un boton con nombre Button1
aqui esta el codigo del form1
Public Class Form1
Public Forma2 As New Form2 'Aqui esta la declaracion publica del form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Forma2.Show()
End Sub
Public Sub Check() 'Esta es la funcion publica que puedes llamar desde cualquier otro form
Me.CheckBox1.Checked = Not Me.CheckBox1.Checked
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Forma2.Click_Boton() 'Aqui llamamos una funcion publica de el form2
End Sub
End Class
Codigo del form2
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form1.Check() 'Llamamos a la funcion publica del form1
End Sub
Public Sub Click_Boton() 'aqui nuestra funcion publica
Me.TextBox1.Text = "Boton en otro form"
End Sub
End Class
ahora, si corres este ejemplo y haces click en el boton del form1 veras que aparece un texto en el textbox del form2, y si haces click en el boton del form2 el Checkbox del form1 estara marcado o desmarcado cada ves que lo presiones, pues ya con esto puedes mandar cualquier variable o objeto a cualquier otro form, e inclusive desencadenar eventos.
Espero no haber entendido mal, ojala te ayude