tengo el formulario principal con varias variables globales, en el formulario2 puedo accesar a ellas sin dificultad haciendo una instancia, pero si abro más formularios los valores se pierden, porque pasa eso y como puedo solucionarlo?
gracias

| |||
acceder a una variable global Hola a todos, espero que esten bien tengo el formulario principal con varias variables globales, en el formulario2 puedo accesar a ellas sin dificultad haciendo una instancia, pero si abro más formularios los valores se pierden, porque pasa eso y como puedo solucionarlo? gracias ![]() |
| |||
Respuesta: acceder a una variable global Para usar variables globales por distintos formularios, sólo teneis que crearos una clase y dentro de esta instanciar la variable. Os pongo el código para que me entendais:
Código:
Como veis en el codigo yo hago la clase dentro del formulario 1 en el mismo namespace. Pero imagino que podrías crear una clase a parte y hacerlo tipo modulo de vb.netpublic partial class Form1 : Form { public Form1() { InitializeComponent(); textbox1.text= variables.var; } } public class variables { public static int var; } Saludos |
| |||
Respuesta: acceder a una variable global Hola, gracias por contestar. También estoy trabajando en C# lo del módulo no me funcionó y cambiar por shared no me aparece. Lo que hago es pasarla como parámetro al tercer formulario. |
| |||
Respuesta: acceder a una variable global Acceder a variables de un modulo directamente no es lo mas correcto, es mejor hacerlo mediante propiedades de manera que puedas interceder en el acceso a dicha variable. En C# no hay modulos pero puedes simular su funcionamiento creando una clase con sus propiedades estaticas.
Código:
Esta seria la forma mas sencilla, pero podrías hacer la variable solo de lectura, o solo de escritura o incluso podrías llamar a algun metodo antes o despues de asignar el valor, ......public class MyClass { private static int m_variable; public static int Variable { get{ return m_variable;} set{ m_variable = value;} } } Para utilizarlo seria mediante : MyClass.Variable; Saludos. |