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

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


Preguntas similares