Visual CSharp .NET - Get set

   
Vista:

Get set

Publicado por Jhon J Hernández jhernandezpulga@aol.com (3 intervenciones) el 10/01/2012 17:11:53
Buenos días tengo en una clase un objeto set y get para manejar un interruptor para evitar que se abra más de un formulario a la vez. Tengo un formulario padre y varios hijos. En el evento formClosing reanudo el estado del interruptor, pero el programa no funciona, si alguien me puede decir en que me equivoqué se lo agradezco.
Código en la clase
class Class1
{
private bool bLibre = true;

public bool establecer
{
get { return bLibre; }
set { bLibre = value; }
}

}

Código en el formulario padre
Class1 o = new Class1();

private void Form1_Load(object sender, EventArgs e)
{


}

private void ingresoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (o.establecer == true)
{
o.establecer = false;
frmIngreso ingreso = new frmIngreso();
ingreso.MdiParent = this;
ingreso.Show();
}
}

private void exámen1ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (o.establecer == true)
{
o.establecer = false;
frmExamen1 examen1 = new frmExamen1();
examen1.MdiParent = this;
examen1.Show();
}
}

Código en el formulario ingreso
Class1 o = new Class1();

private void frmIngreso_Load(object sender, EventArgs e)
{

}
private void frmIngreso_FormClosing(object sender, FormClosingEventArgs e)
{
o.establecer = true;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

Get set

Publicado por roger rogergomez780@hotmail.com (77 intervenciones) el 11/01/2012 13:28:51
si creas una nueva instancia de Class1 en la ventana hija, esta no tendrá nada que ver con la instancia de Class1 en la ventana padre. Deberias tener la instancia de Class1 de la ventana padre, expuesta como una propiedad, y accederla desde el formulario hijo, para setearle el valor, algo como

private void frmIngreso_FormClosing(object sender, FormClosingEventArgs e)
{
( (FormPadre)this.MdiParent).PropiedadClass1.establecer = true;
}

Saludos

Nota: Si lo que quieres es que no se abrá ese formulario dos veces, tambien tienes la propiedad OpenForms, Application.OpenForms
http://social.msdn.microsoft.com/Forums/es/vcses/thread/268b8115-2db4-4fda-b9fb-43813f6b0caa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Get set

Publicado por Jhon J Hernández jhernandezpulga@aol.com (3 intervenciones) el 16/01/2012 17:05:21
((Form)this.MdiParent).libre.bLibre = true;
Sale error
'System.Windows.Forms.Form' does not contain a definition for 'libre' and no extension method 'libre' accepting a first argument of type 'System.Windows.Forms.Form' could be found (are you missing a using directive or an assembly reference?)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

Get set

Publicado por roger rogergomez780@hotmail.com (77 intervenciones) el 16/01/2012 17:18:27
bueno, en ese punto no era tal cual, en realidad en vez de Form, debe ir el nombre de formulario que es la clase que tiene la propiedad Libre

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Get set

Publicado por Jhon J Hernández jhernandezpulga@aol.com (3 intervenciones) el 18/01/2012 16:52:55
No entiendo, una cosa es una clase y otra un formulario. El método está definido dentro de una clase no dentro de un formulario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

Get set

Publicado por roger rogergomez780@hotmail.com (77 intervenciones) el 18/01/2012 17:01:49
No, en realidad un formulario no es mas que una clase. Pero creo que entiendo tu confusión

Asi como lo tienes en la clase padre estaria bien:

Código en el formulario padre
Class1 o = new Class1();

pero mas bien la pones publica
public Class1 o = new Class1();

Y ya en el formulario de ingreso para asignar el valor, le pones
( (Form1)this.MdiParent).o.establecer = true;

Creo que Form1 se lllama el formulario padre, cierto?

Si entiendo bien, eso es lo que necesitas, sino me avisas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar