Pregunta

En Java Swing puedo insertar paneles en paneles, etc., y no tener que construir una nueva ventana para cada vista de mi aplicación, o perder el tiempo eliminando y agregando controles.

Hay un panel clas sin C #, sin embargo, no puedo ver ninguna forma de crear un 'formulario de panel' o, básicamente, solo un formulario en el diseñador de formularios que es un panel y su contenido.

¿Cómo hago esto entonces y trabajo como lo hice con Java Swift?

¿Fue útil?

Solución

Por lo general, solo acoplo diferentes formularios entre sí, configurando la propiedad IsMdiContainer en true en la ventana principal. Luego creo subformularios que conecto usando la siguiente función:

static class FormUtil
{
    static public void showForm(Form sender, Control reciever)
    {
        sender.ControlBox = false;
        sender.FormBorderStyle = FormBorderStyle.None;
        sender.ShowInTaskbar = false;
        sender.TopLevel = false;
        sender.Visible = true;
        sender.Dock = DockStyle.Fill;

        reciever.Controls.Clear(); //clear panel first
        reciever.Controls.Add(sender);
    }

}

luego, cada vez que necesito acoplar un formulario dentro de un panel en el formulario de padres, simplemente lo hago:

FormUtil.showForm(new SomeForm(), this.splitContainer1.Panel1);

Esto me permite delegar parte de la creación de formularios a diferentes diseñadores. Funciona como un encanto para mí, me encanta escuchar si hay una mejor manera de hacerlo.

Otros consejos

En realidad, puede usar el control del panel y configurar su propiedad Dock para Rellenar. De esa manera, su panel será todo el lienzo del formulario. Luego, puede agregar paneles secundarios según sea necesario, ya sea a través del código que está detrás o del diseñador de formularios.

Existe el concepto de controles de usuario que básicamente le proporciona un panel como superficie de diseño, sin mencionar que puede crear formas atómicas (que pueden reutilizarse) y registrarlas como heredables, de esa manera también puede proporcionar herencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top