elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Como usar un panel en un form como contenedor para otros form en C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como usar un panel en un form como contenedor para otros form en C#  (Leído 2,486 veces)
luar79

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Como usar un panel en un form como contenedor para otros form en C#
« en: 26 Mayo 2022, 12:21 pm »

Hola!

he conseguido encontrar la forma de como en un panel dentro del form principal, ir abriendo otros form, manteniendo la estructura de botones del form principal, y sobre todo que se abra de forma mas realista, que si se abriera por cada form una ventana y se cerrara la otra.
El problema que me encuentro es que solo abre un nivel inferior de forms desde el form principal. Me explico, si desde el form princpila cargamos el form de Login, y una vez autenticado entra a otro form con diferentes opciones segun el perfil del usuario, a ese ultimo form del usuario, el metodo que tengo no funciona. Ya he probado desde el form de Login, llamar al panel del form principal, para modificarlo en el metodo que pasare a continuacion, pero me da error de acceso protegido, aunque haya puesto el panel del form principal la propiedad modifiers a public. Tambien he probado desde el form Login ha crear una instancia del form principal y asi llamar al metodo de abrir otro form en el panel, pero no entra bien en el metodo y no realiza nada. No se si os ocurrira alguna solucion?.Pego codigo del metodo:

Código:
    //Metodo para abrir formularios dentro del panelContenedor
        public void AbrirFormulario<MiForm>() where MiForm : Form, new()
        {
            Form formulario;
            formulario = panelFormularios.Controls.OfType<MiForm>().FirstOrDefault();//Busca en la colecion el formulario
            //si el formulario/instancia no existe
            if (formulario == null)
            {
               
                formulario = new MiForm();
                formulario.TopLevel = false;
                formulario.FormBorderStyle = FormBorderStyle.None;
                formulario.Dock = DockStyle.Fill;
                panelFormularios.Controls.Add(formulario);
                panelFormularios.Tag = formulario;
                formulario.Show();
                formulario.BringToFront();
               
            }
            //si el formulario/instancia existe
            else
            {
                formulario.BringToFront();
            }
        }


y una de las prueba que he realizado de las que he comentado antes, es definir ese metodo en el formulario de login y llamar al panel contenedor asi: formPrincipal.panelContenedor.
Per da error de estar protegido. Ademas me parece que a nivel de seguridad, por encapsulación no seria lo correcto.
La otra forma como explicaba es llamar a la funcion del form principal de form: formPrincipal.AbrirFormulario<formogin>() . Pero no entraba en el metodo al ejecturar la aplicacion.

Bueno muchas gracias de antemano por la ayuda!, saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines