• Martes 19 de Marzo de 2024, 09:53

Autor Tema:  Como insertar otro Form en un control panel??...  (Leído 18838 veces)

juancho1985df

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Como insertar otro Form en un control panel??...
« en: Jueves 3 de Diciembre de 2009, 05:39 »
0
Hola a todos, les comento mi duda ya que hace rato ando buscando una solución por todos lados pero no la eh encontrado, estoy haciendo un proyecto aplicación para windows en visual studio con c #,  lo que hago es abrir  mi form2 (Lista de clientes)  en un panel que se encuentra en el form principal con el siguiente codigo:
 
 Form2 form2 = new Form2();
   form2.TopLevel = false;
   form2.Parent = panel1;
   form2.Show();
  form2.BringToFront();

hasta ahí todo bien pero cuando quiero abrir el form Cliente (en el mismo panel) haciendo click en un botón del form2 (lista de clientes) no me aparece nada en el panel del form principal, el código con el que intento mostrarlo es este:
Menu me=new Menu(); //form principal que contiene el panel
.
.

     Cliente clie = new Cliente();
     clie.TopLevel = false;
     clie.Parent = me.panel1;
     clie.Show();
     clie.BringToFront();
espero que puedan ayudarme ya que recién me estoy iniciando , desde ya muchas gracias , saludos!!

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #1 en: Jueves 3 de Diciembre de 2009, 08:05 »
0
Nose si te estoy entendiendo bien, pero lo que logro captar es que quieres mostrar varias pantallas en una sola ventana.
Si es asi, eso yo lo hago colocando un panel en la ventana principal y agrego controles de usuario, donde cada control de usuario va hacer cada una de las pantallas.
El codigo para mostrar un control de usuario sobre el panel:

panel1.Clear(); //limpio el panel por si llega haber otro componente sobre este.
controlUsuario1 cu1 = new ControlUsuario1(); //Creo una instancia del controlUsuario1.
panel1.Controls.Add(cu1);  //Agrego la instancia al panel y listo.

NOTA: Te recomiendo que pongas del mismo tamaño o menor el control de usuario con respecto a la ventana principal (windows form).

Nose si esto querias hacer, pero si estoy entendido te lo puedo explicar mejor.

juancho1985df

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #2 en: Jueves 3 de Diciembre de 2009, 19:58 »
0
Hola pedroqv! claro osea tengo un form llamado Menu el cual contiene un panel1 y un botón que haciendo click en él, se abre dentro del panel1 un form llamado ListadeCliente, hasta ahi todo bien pero después el form ListadeCliente tiene un botón que al hacer click se abre otro form llamado Cliente este ultimo también quiero que se abra dentro del panel1 del form Menu, pero todavía no logro hacer esto,,,,,,,,,voy a poner a leer un poco sobre "control de usuario" ya que nunca he utilizado uno, una pregunta: ¿dentro de un control de usuario se puede poner un form completo?, gracias por tu respuesta y espero poder solucionar este problemilla, saludos!!!

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #3 en: Jueves 3 de Diciembre de 2009, 20:57 »
0
Para agregar un control de usuario (users control) se hace click derecho sobre el proyecto en el menu "explorador de soluciones" ahi seleccionas agregar/control de usuario o tambien agregar/nuevo elemento/control de usuario.

Una vez que lo agregas, abre el control de usuario y te daras cuenta que se parece a un windows form con la unica diferencia que este no tiene marco de ventana, solamente tiene el area donde pondras los componentes.
Y asi puedes agregar cuantos controles de usuario necesites, pon atencion al nombre que le pones porque lo ocuparas para llamarlo desde el windows form.

Abres el windows form que fue el primero que se creo al crear tu proyecto ahi pones tu panel1, y tus 2 botones donde cada boton va poner uno de los control de usuario sobre tu panel1. Les das doble click a los botones para que se genere el evento de cuando uno hace click sobre el boton y ahi es donde creas la instancia de control de usuario y lo agregas al panel.

en el primer boton seria:
panel1.Clear();  //para asegurarte de que el panel este vacio
ControlUsuario1 cu1 = new ControlUsuario1();  //creas una instancia del primer control de usuario
panel1.Controls.Add(cu1);   //Agregas al panel y desde este momento tu control de usuario ya estara sobre tu panel.

para el segundo boton es:
panel1.Clear();  //para asegurarte de que el panel este vacio
ControlUsuario2 cu2 = new ControlUsuario2();  //creas una instancia del primer control de usuario
panel1.Controls.Add(cu2);   //Agregas al panel y desde este momento tu control de usuario ya estara sobre tu panel.

Generalmente el tamaño del panel y los controles de usuario deben tener el mismo tamaño.
Yo habia publicado este problema, para la otra primero mejor revisa el foro... ahi te va mi publicacion:
foros.solocodigo.com/viewtopic.php?f=50&t=41443&p=150290&hilit=barajear#p150290

 :alien:   :alien:   :alien:

juancho1985df

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #4 en: Jueves 3 de Diciembre de 2009, 21:22 »
0
Muchas Gracias perdroqv por tu respuesta, mas luego me pondré a pobrar con estos controles de usuarios aunque creo que se me va complicar un poquito ya que a los forms  los tengo implementados, asique los tendré que migrar a cada  uno a un control de usuario, veré que sale y te estaré comentando que tal me va, saludos!!!

juancho1985df

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #5 en: Sábado 5 de Diciembre de 2009, 07:00 »
0
Hola pedroqv disculpa que moleste de nuevo pero estuve probando usar los controles de usuario y no hay caso que funcione, hice un proyecto a modo de ejemplo antes de aplicarlo a mi aplicación, y cuando pongo los 2 botones para abrir los diferentes controles de usuario en el panel del form principal funciona todo bien, pero lo que quiero hacer es lo siguiente , que el form principal  tenga un panel y un solo botón que va abrir el primer control de usuario, este contiene una lista de clientes, en el mismo selecciono un cliente y hago click en un botón que esta en el primer control de usuario  que va abrir el segundo control de usuario el cual quiero que se habrá en el panel del form principal.Desde ya gracias!!!saludos!

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #6 en: Sábado 5 de Diciembre de 2009, 17:08 »
0
OBTUVE LA SOLUCION CON 3 CLASES: WINDOWS FORM Y 2 CONTROLES DE USUARIO.

WINDOWS FORM:
Incluye un panel (panel1) y un boton (button1) para mostrar el UserControl1 sobre el panel. Una situacion diferente que se esta presentando que cuando estoy creando un objeto UserControl1 le estoy mandando como parametro el panel (panel1), para que despues el UserControl1 tenga la posibilidad de usar el panel1 y agregar el UserControl2.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }          

        private void button1_Click(object sender, EventArgs e)
        {
            panel1.Controls.Clear();
            UserControl1 uc1 = new UserControl1(panel1);
            panel1.Controls.Add(uc1);
        }      
    }

USERCONTROL1:
Esto a diferencia de lo antes explicado, defino a nivel clase una variable Panel para almacenar el Panel que viene como parametro desde el WindowsForm. Tambie para esto tuve que sobrecargar el constructor recibiendo como parametro un Panel.
Entonces una vez que el evento click del mouse se activa, se crea una instancia de la clase UserControl2 y como ya tenemos el apuntador hacia el panel, que fue lo que recibimos como parametro y luego lo almacenamos en la variable global, ahora si podemos decir que limpie el panel y agregue este nuevo control (UserControl2).
En caso que quieras agregar otro UserControl3 al panel tendrias que mandar de nuevo el Panel hacia el UserControl2 y asi se forma una cadenita.
Otra forma de hacerlo sin necesitar pasar el panel por parametros, es definirlo como estatico y publico, de este modo tu puedes acceder al Panel de cualquier clase como si estuviera en la definido en esa misma clase.
Una cosa importante que se me habia pasado avistarte en este UserControl1 solamente puse un boton que te quita del panel al UserControl1 y te pone al userControl2.

public partial class UserControl1 : UserControl
    {
        Panel panel;

        public UserControl1()
        {
            InitializeComponent();
        }

        public UserControl1(Panel p)
        {
            InitializeComponent();
            panel = p;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            panel.Controls.Clear();
            UserControl2 uc2 = new UserControl2();
            panel.Controls.Add(uc2);            
        }
    }

USERCONTROL2:
Y por ultimo al userControl2 no le añadi codigo por que no necesite, solamente le agregue un label para saber si habia sido añadido el control al panel.
Si quieres pasar datos de usercontrol1 hacia el usercontrol2 una manera que lo puedes hacer es por medio de parametros como lo hicimos con el panel.


 :alien:   :alien:   :alien:

juancho1985df

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como insertar otro Form en un control panel??...
« Respuesta #7 en: Domingo 6 de Diciembre de 2009, 07:46 »
0
PERFECTO pedro  :good:  !!! ahora si pude solucionar el problema con la ultima solución que me diste y también la pude implementar con los forms que tenia anteriormente un millón de gracias por compartir tus conocimientos!!! y si alguna ves te puedo ayudar en algo avisa!! saludos  :hola:

cmdoperseo

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re:Como insertar otro Form en un control panel??...
« Respuesta #8 en: Sábado 21 de Mayo de 2016, 16:45 »
0
Gracias pedro andaba buscando esto un buen tiempo ...... te pasastes