Estoy tratando de crear un multilayout pantalla principal de la aplicación. Tengo algunos botones en la parte superior que enlace a la sección principal de la aplicación (por ejemplo, ventana de administración de cada entidad en el Modelo)

Clic en cualquiera de estas botón de muestra de los asociados UserControl en un Panel. El Panel contiene los Controles que a su vez mantiene la interfaz de usuario.

La WinForms UserControl no tiene la Anchor o Dock de la propiedad.

He probado la configuración de la propiedad de UserControl

AutoSize=True

Y

private void ManageUsersControl_Load(object sender, EventArgs e)
{
        this.Width = this.Parent.Width;
        this.Height = this.Parent.Height;
}

Pero estos no trabajo.

Nota: me carga este control de forma dinámica en tiempo de ejecución

  • UserControl tiene un Dock la propiedad se hereda la propiedad de Control. Consulte la sección Propiedades de msdn.microsoft.com/en-us/library/…
  • la declaración anterior «El winforms usercontrol no tiene el «Ancla» o «Muelle» propiedad» estaba equivocado. Yo estaba buscando «Dock», mientras que en el control de usuario. Sólo debe aparecer para los controles(los niños) que se agrega a la UserControl.
  • sí tiene sentido, pero ¿por qué no está presente en el diseñador de cuadrícula de propiedades?
  • porque en este punto, el UserControl fue por su propia cuenta, no se agrega a cualquier padre de familia que requieren que el tipo de relleno que debería haberse demostrado que si yo estaba en el Panel de control y he añadido el UserControl
  • Creo que hay algo de confusión entre Sistema.Windows.Los formularios.Control de usuario (que tiene una propiedad Dock) y del Sistema.Windows.Controles.Control de usuario (que no).
InformationsquelleAutor codingbiz | 2012-06-03

3 Comentarios

  1. 83

    Pruebe a establecer el Dock propiedad Fill:

    private void ManageUsersControl_Load(object sender, EventArgs e)
    {
            this.Dock = DockStyle.Fill;
    }

    También me gustaría establecer AutoSize a la predeterminada, creo que es False. Ver cómo funciona …

    • A partir de la OP: The winforms usercontrol does not have the "Anchor" or "Dock" property.
    • El OP fue probablemente equivocada; de lo contrario, no sería un UserControl.
    • ACEPTAR esto realmente me sorprendió. ¿Sabes por qué esta propiedad no está en el UserControl diseñador de cuadrícula de propiedades? Por cierto, funciona a la perfección en la ejecución.
    • esto funcionó a pesar de que tengo un parpadeo – pero es la respuesta a mi pregunta. Gracias A Todos.
    • me alegro de ayudar …puede que pruebe a establecer DoubleBuffered = true …IIRC. Sí, es un poco frustrante no tener la propiedad Dock en el diseñador. Pero, tiene sentido – cuando en el Diseñador de trabajo en el control de usuario en sí, ¿qué contenedor se utiliza para maximizar de la misma? No hay ningún contenedor para Fill a.
    • Sistema.Windows.Controles.UserControl (utilizado para WPF) sí no tiene un Muelle de la propiedad, por lo que esta no puede ser la respuesta correcta.
    • el OP es el uso de formularios windows forms.
    • Gracias @IAbstract, estás en lo correcto. Me encontré aquí, mientras que la investigación de un problema similar. Mi aplicación contiene WinForms y WPF elementos, y que me había confundido a mí mismo con los dos diferentes UserControl clases, sólo uno de los cuales tiene la propiedad Dock.
    • Para ser claros, no funciona. Con winforms formas.UserControl. Usted necesita para crear el comportamiento de Carga y agregar el».Dock = DockStyle.De relleno» en.

  2. -1
    UserControl1 myusercontrol = new UserControl1();
                myusercontrol.Dock = DockStyle.Fill;//Dock Prope. Fill user Control Contrainer
                TabPage myTabPage = new TabPage();//New Tab Create
                myTabPage.Text = "Wel-Come Page";//Tab Header Txt
                myTabPage.Controls.Add(myusercontrol);
                tabControl1.TabPages.Add(myTabPage);
  3. -4

    En el evento resize de control de usuario .

     private void MyTextBox_Resize(object sender, EventArgs e)
            {
                this.Width = textBox1.Width;
                this.Height = textBox1.Height;
            }

Dejar respuesta

Please enter your comment!
Please enter your name here