Crea un Module en el proyecto y declara en él todas las variables que serán globales de la aplicación, como Friend.
Algo así:
Código vb.net:
Ver originalModule Modulo1
Friend variableA As Integer
Friend variableB As String
End Module
Debes recordar que sólo puede haber un módulo por proyecto o por Namespace, y que todos los elementos declarados en él (variables o métodos) son accesibles desde cualquier parte de la aplicación, pero que también
conservar los valores hasta ser reinicializados.
Ahora bien, si quieres una solución intermedia, lo que podrías hacer es, en el caso que un formulario invoque a otro, crearle propiedades públicas al segundo de modo tal que sea en esas propiedades donde se almacenen los valores, y luego, al cerrarse y
antes de un
Dispose() simplemente recuperas del formulario hijo los valores que todavía permanecen en él.
Eso sería:
Código vb.net:
Ver originalDim oVentana As New FormIngresoDatos
oVentana.ShowDialog()
If oVentana.DIalogResult = DialogResult.Aceptar
varA = oVentana.Texto1
varB = oVentana.Texto2
End If
Este ejemplo requiere que haya un botón en el segundo formulario que devuelva el valor Aceptar en la propiedad DialogResult de la ventana.
Texto1 y Texto2 son propiedades que podrían escribirse así:
Código vb.net:
Ver originalPublic Property Texto1() As String
Get
Return variableA
End Get
Set(ByVal Value As String)
variableA = Value
End Set
End Property
Public Property Texto2() As String
Get
Return variableB
End Get
Set(ByVal Value As String)
variableB = Value
End Set
End Property
También en este caso, las variables
variableA y
variableB son
variables locales del segundo formulario.
Al menos de esta forma seguirías respetando el paradigma POO (programación orientada a objetos).