Duda sobre metodos en formas diferentes...

07/06/2005 - 21:31 por Jorge | Informe spam
Tengo una forma Form1 en la cual hice un metodo que crea unos botones dentro
un un Group box apartir de una base de datos...

public class Form1 : System.Windows.Forms.Form
{
...
...

public void crea_botones()
{
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Form1.ActiveForm.Controls.Add(Gpo_Vin);

etc etc
}


Tambien en un boton de esa misma forma (form1) hay un boton que abre otra
forma asi:

private void btn_Ajustes_Click(object sender, System.EventArgs e)
{
Ajustes fm_aj = new Ajustes();
fm_aj.Show();
fm_aj.TopMost = true;
}

Estando ya en la forma fm_aj y aprentando un boton llamo asi al metodo de
arriba...

Form1 forma = new Form1();
forma.crea_botones();

Esto funciona muy bien solo que el GroupBox() se crea en mi forma fm_aj y no
en la forma principal Form1

Que tengo que hacer?
Cualquier ayuda es bienvenida...

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
07/06/2005 - 22:07 | Informe spam
Jorge,

¿El GroupBox se crea en el formulario Ajustes, o en otro formulario nuevo de
la clase Form1? (creo que es esto último).
El formulario principal de una aplicación se crea dentro del método Main(),
como argumento de la llamada a Application.Run(). Si necesitas referirte a
ese formulario principal, modifica el método Main así:

public class Form1 : System.Windows.Forms.Form
{
// ...

public static Form1 FormularioPrincipal; // variable en la que
almacenaremos la referencia al form principal

public static void Main()
{
FormularioPrincipal = new Form1();
Application.Run(FormularioPrincipal);
}
}

Luego en la clase Ajustes podrás decir:

Form1.FormularioPrincipal.Crea_botones();

Dentro del método Crea_botones (que según los convenios de nombres
propuestos por MS deberías llamar con 'C' mayúscula, porque es público),
debes quitar la referencia a Form1.ActiveForm, y dejarlo así:

public void Crea_botones()
{
Controls.Remove(Gpo_Vin); // los controles del form al que se aplique el
método
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Controls.Add(Gpo_Vin);
// etc etc
}

También me parece que Gpo_Vin debería ser privado (si sólo se va a tratar
dentro de Crea_botones) y debería llamarlo 'gpo_vin'...

Slds - Octavio

"Jorge" escribió en el mensaje
news:%
Tengo una forma Form1 en la cual hice un metodo que crea unos botones
dentro
un un Group box apartir de una base de datos...

public class Form1 : System.Windows.Forms.Form
{
...
...

public void crea_botones()
{
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Form1.ActiveForm.Controls.Add(Gpo_Vin);

etc etc
}


Tambien en un boton de esa misma forma (form1) hay un boton que abre otra
forma asi:

private void btn_Ajustes_Click(object sender, System.EventArgs e)
{
Ajustes fm_aj = new Ajustes();
fm_aj.Show();
fm_aj.TopMost = true;
}

Estando ya en la forma fm_aj y aprentando un boton llamo asi al metodo de
arriba...

Form1 forma = new Form1();
forma.crea_botones();

Esto funciona muy bien solo que el GroupBox() se crea en mi forma fm_aj y
no
en la forma principal Form1

Que tengo que hacer?
Cualquier ayuda es bienvenida...


Respuesta Responder a este mensaje
#2 Pedro Luna Montalvo
08/06/2005 - 04:19 | Informe spam
Saludos,

Tal vez pueda darte luces en tu dilema.

Primero, el metodo ActiveForm es un metodo estatico, es decir, que da lo
mismo escribir:

Form1.ActiveForm, Form.ActiveForm, etc


Ahora bien, si notas, estas en fm_aj, y creas la instancia de Form1 y
ejecutas el metodo.
El metodo agrega los controles en "el formulario activo", el cual todavia es
fm_aj, pues Form1 todavia no es visible.

Es por eso que los controles se agregan en fm_aj y no donde deseas.

En lugar de:
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
usa:
Me.Controls.Remove(Gpo_Vin);


Saludos,
Pedro Luna Montalvo, [MVP VB.NET]
Gye, Ecu



"Jorge" escribió en el mensaje
news:%
Tengo una forma Form1 en la cual hice un metodo que crea unos botones
dentro
un un Group box apartir de una base de datos...

public class Form1 : System.Windows.Forms.Form
{
...
...

public void crea_botones()
{
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Form1.ActiveForm.Controls.Add(Gpo_Vin);

etc etc
}


Tambien en un boton de esa misma forma (form1) hay un boton que abre otra
forma asi:

private void btn_Ajustes_Click(object sender, System.EventArgs e)
{
Ajustes fm_aj = new Ajustes();
fm_aj.Show();
fm_aj.TopMost = true;
}

Estando ya en la forma fm_aj y aprentando un boton llamo asi al metodo de
arriba...

Form1 forma = new Form1();
forma.crea_botones();

Esto funciona muy bien solo que el GroupBox() se crea en mi forma fm_aj y
no
en la forma principal Form1

Que tengo que hacer?
Cualquier ayuda es bienvenida...


Respuesta Responder a este mensaje
#3 Jorge
08/06/2005 - 06:20 | Informe spam
Gracias Octavio funciono de maravilla...
Tambien Gracias Pedro...


"Jorge" escribió en el mensaje
news:#
Tengo una forma Form1 en la cual hice un metodo que crea unos botones


dentro
un un Group box apartir de una base de datos...

public class Form1 : System.Windows.Forms.Form
{
...
...

public void crea_botones()
{
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Form1.ActiveForm.Controls.Add(Gpo_Vin);

etc etc
}


Tambien en un boton de esa misma forma (form1) hay un boton que abre otra
forma asi:

private void btn_Ajustes_Click(object sender, System.EventArgs e)
{
Ajustes fm_aj = new Ajustes();
fm_aj.Show();
fm_aj.TopMost = true;
}

Estando ya en la forma fm_aj y aprentando un boton llamo asi al metodo de
arriba...

Form1 forma = new Form1();
forma.crea_botones();

Esto funciona muy bien solo que el GroupBox() se crea en mi forma fm_aj y


no
en la forma principal Form1

Que tengo que hacer?
Cualquier ayuda es bienvenida...


Respuesta Responder a este mensaje
#4 Octavio Hernandez
08/06/2005 - 22:18 | Informe spam
¡Qué tal, Peter!

Muy buena observación, yo no me había dado cuenta de que los controles
salían en fm_aj porque ese era el formulario activo en ese momento :-)

Salu2 - Octavio

"Pedro Luna Montalvo" escribió en el
mensaje news:
Saludos,

Tal vez pueda darte luces en tu dilema.

Primero, el metodo ActiveForm es un metodo estatico, es decir, que da lo
mismo escribir:

Form1.ActiveForm, Form.ActiveForm, etc


Ahora bien, si notas, estas en fm_aj, y creas la instancia de Form1 y
ejecutas el metodo.
El metodo agrega los controles en "el formulario activo", el cual todavia
es fm_aj, pues Form1 todavia no es visible.

Es por eso que los controles se agregan en fm_aj y no donde deseas.

En lugar de:
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
usa:
Me.Controls.Remove(Gpo_Vin);


Saludos,
Pedro Luna Montalvo, [MVP VB.NET]
Gye, Ecu



"Jorge" escribió en el mensaje
news:%
Tengo una forma Form1 en la cual hice un metodo que crea unos botones
dentro
un un Group box apartir de una base de datos...

public class Form1 : System.Windows.Forms.Form
{
...
...

public void crea_botones()
{
Form1.ActiveForm.Controls.Remove(Gpo_Vin);
Gpo_Vin = new GroupBox();
Gpo_Vin.Width = 1008;
Gpo_Vin.Height = 320;
Gpo_Vin.Top = 12;
Gpo_Vin.Left = 8;
Gpo_Vin.BackColor = System.Drawing.Color.LightGray;
Form1.ActiveForm.Controls.Add(Gpo_Vin);

etc etc
}


Tambien en un boton de esa misma forma (form1) hay un boton que abre otra
forma asi:

private void btn_Ajustes_Click(object sender, System.EventArgs e)
{
Ajustes fm_aj = new Ajustes();
fm_aj.Show();
fm_aj.TopMost = true;
}

Estando ya en la forma fm_aj y aprentando un boton llamo asi al metodo de
arriba...

Form1 forma = new Form1();
forma.crea_botones();

Esto funciona muy bien solo que el GroupBox() se crea en mi forma fm_aj y
no
en la forma principal Form1

Que tengo que hacer?
Cualquier ayuda es bienvenida...






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida