• Domingo 22 de Diciembre de 2024, 08:58

Autor Tema:  Barajear paneles  (Leído 1796 veces)

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Barajear paneles
« en: Viernes 20 de Noviembre de 2009, 20:51 »
0
Con barajear paneles me refiero que en una misma ventana debe contener varios paneles a todo lo ancho de la ventana, donde cada panel va tener sus controles, el panel correspondiente se va mostrar a como el menu le diga.
Esto yo pudiera hacerlo creando para cada opcion una nueva clase windows forms  que crea una nueva ventana pero eso lo que trato de evitar, el punto es que en vez de estar manejando varias ventanas sean una sola, en java se utilza una clase llamada cardlayout pero no estoy muy seguro.

Cuando pongo un panel a lo ancho de la ventana todo va bien, pero cuando pongo el segundo me doy cuenta que se pone dentro del primero, entonces si le doy visible = false al primero van a desaparecer los 2 y mi objetivo es mandar una sentencia donde yo pueda aparecer y desaparecer cuantos paneles haya, por ejemplo; muestra el panel de agregar clientes, ahora mejor muestra el panel de quitar clientes y todo en una misma ventana.

¿Que control tendria que usar para realizar esto?

totorufo

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Barajear paneles
« Respuesta #1 en: Miércoles 25 de Noviembre de 2009, 22:25 »
0
Por lo que he entendido, parece ser que estas añadiendo un panel a otro panel.

Tendras algo parecido a esto:

this.Controls.Add(this.panel1);
this.panel1.Controls.Add(this.panel2);

Donde tendrias que tener esto:

this.Controls.Add(this.panel1);
this.Controls.Add(this.panel2);

Si pruebas con esto no tendria que darte problemas a lo que quieres hacer (aunque yo igual utilizaria UserControls)

Si no funciona un poco de codigo no vendria mal :)

Espero que te haya servido.

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Barajear paneles
« Respuesta #2 en: Jueves 26 de Noviembre de 2009, 00:22 »
0
Si entendiste bien.

El problema es que no escribo codigo, solamente arrastro los componentes en el visual estudio 2005 y el solo al juntar 2 paneles me pone uno dentro de otro, yo creo que me voy a tener que meter en el codigo para buscar esa parte que dices y modificarla.

Tambien en agregar nuevos archivos al proyecto me habia captado de ese control de usuario donde te aparece el area donde puedes insertar los componentes sin el marco de la ventana, yo pienso que es para poner ese control de usuario en un windows form, me imagino que es lo que dices y seria mejor que manejar varios paneles en una misma ventana. El problema que tuve al insertar un control de usuario que no supe cual seria el codigo para poner ese control de usuario en mi ventana de windows form...   :comp:

totorufo

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Barajear paneles
« Respuesta #3 en: Jueves 26 de Noviembre de 2009, 11:18 »
0
Hola!

Arrastrando Paneles sin programar:

Si quieres ir arrastrando paneles, yo haria lo siguiente, tampoco soy un experto! Haces el formulario lo mas grande que puedas,
Si estas trabajando con ventana 800X600 (ya nadie utiliza esto, me parece) haces el formulario mas grande que esa medida. Y
arrastras tus paneles al formulario uno al lado del otro, lo programas todo y al final en vez de arrastrarlo a la posicion que quieres
metes el valor por propiedades: Location(X,Y). Mas o menos.

Usando UserControl: (Yo uso .NET 2008)

Projecto > new item > UserControl  (MiUserControl)

Programas el usercontrol igual que si fuera un formulario.

En tu formulario, en NET 2008 la parte de diseño esta separada de la programacion archivo .cs
Vas ahi y pones lo siguiente:

Código: C#
  1.  
  2. partial class Form1
  3. {
  4.   ....
  5.   private void InitializeComponent()
  6.   {
  7.       ....
  8.       this.m_userControl1 = new MiUserControl();
  9.       ...
  10.    }
  11.  
  12.    private MiUserControl m_userControl1;
  13. }
  14.  
  15.  

Y ya ta! Asi es como lo hago yo! Si alguien sabe de otra forma...

Si estas trabajando con NET 2005, me parece, no estoy seguro, en el codigo del formulario, tiene que
haber una region que ponga InitializeComponent().

Espero que te sirva y me haya esplicado. Las faltas de ortografia es otra cosa :wacko:

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Barajear paneles
« Respuesta #4 en: Viernes 27 de Noviembre de 2009, 00:28 »
0
El primer caso que expones puede funcionar (agregar varios paneles uno a un lado de otro) pero creo que el codigo empieza a perder claridad porque se acumula todo en un solo archivo, por lo que decidi probar mejor el segundo caso (usar controles de usuario).

Componentes que utilice:
    2 controles de usuario (userControl1 y userControl2)
    2 botones (button1 y button 2)
    1 panel (panel1)

Los 2 controles de usuario son los que se van a mostrar en la ventana principal de windows form por lo que les di una dimesion preestablecida, casi igual de grande que la ventana de windows form, digo casi porque deje un espacio para poner los botones en la parte de abajo.

Cada uno de los botones de los 2 que puse en la parte de abajo del panel van a mostrar uno de los control de usuarios.

El panel es el que sirve de contendedor para poner los controles de usuario.

Código: C#
  1.  
  2.         private void button1_Click(object sender, EventArgs e)
  3.         {
  4.             panel1.Controls.Clear();
  5.             UserControl1 uc1 = new UserControl1();
  6.             uc1.Show();
  7.             panel1.Controls.Add(uc1);
  8.         }
  9.  
  10.         private void button2_Click(object sender, EventArgs e)
  11.         {
  12.             panel1.Controls.Clear();
  13.             UserControl2 uc2 = new UserControl2();
  14.             uc2.Show();
  15.             panel1.Controls.Add(uc2);
  16.         }
  17.  
  18.  

 :comp:  :comp:  :comp: