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.net
public 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. |