CLR: .Net / Mono / Boo / Otros CLR > C#

 Como insertar otro Form en un control panel??...

<< < (2/2)

juancho1985df:
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:
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:
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:
Gracias pedro andaba buscando esto un buen tiempo ...... te pasastes

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa