Tengo un UserControl que consiste en una Label (parte Superior), un FlowLayoutPanel (Llenado, Dosificación de flujo y no wrap) y un Panel (parte Inferior). El usuario que crea el control de una serie de controles, basados en una lista de cosas que se, y los agrega a la FlowLayoutPanel.

¿Cómo puedo obtener este UserControl adecuadamente cambiar el tamaño de sí mismo, de modo que el FlowLayoutPanel no tiene barras de desplazamiento? He tratado de usar varias combinaciones de AutoSize y AutoSizeMode en el FlowLayoutPanel y la UserControl sí mismo, pero me parece que no puede conseguir que funcione. Ya sea que termino con algo que no se ajusta en absoluto, o no sea lo suficientemente grande o es aplastado a casi nada.

InformationsquelleAutor Svish | 2009-08-31

5 Comentarios

  1. 11

    Gracias por todas las sugerencias. La solución esta vez parecía conjunto AutoSize a true tanto para el FlowLayoutPanel y la UserControl sí mismo.

    Ahora, cómo obtener el formulario que contendrá esta UserControl así como algunos otros controles, que no puedo entender en el momento, pero supongo que debe ser una pregunta aparte…

    • Hiciste para resolver la última parte?
    • Esto fue como hace 6 años, así que no tengo ni idea, jeje. Tal vez la búsqueda de las preguntas hechas por mí en todo el tiempo que hice esta 😛
    • Aquí es un enlace para una respuesta para obtener el control de usuario cargado en un formulario. Básicamente agregar su montaje a la caja de herramientas o la reconstrucción de la solución.
  2. 5

    Puede utilizar el Ancla y la propiedad Dock de control de usuario para configurar las opciones para que los bordes de su control se queda «pegado» a algunas otras partes de la interfaz de usuario. Cuando la interfaz de usuario es el tamaño, el control va a seguir a lo largo de!

    Si utiliza los anclajes y el muelle en todos los controles en el control de usuario y el conjunto de ellos para acoplar los bordes del control, los controles de tamaño con el objeto UserControl y ahora usted puede configurar los anclajes/dock para el control de usuario también.

    • Que yo sepa, pero no quiero que el control para cambiar el tamaño de acuerdo a sus padres. Yo quiero que crecen o se encogen de modo que sea lo suficientemente grande como para cubrir el contenido de la FlowLayoutPanel sin que se ponga las barras de desplazamiento o el recorte de los contenidos.
  3. 2

    Envolver el FlowLayoutPanel en un TableLayoutPanel va a permitir la correcta autosize comportamiento.

    Su UserControl debería tener este aspecto:

    UserControl
        TableLayoutPanel (Dock-Fill)
            Row1 : Label
            Row2 : FlowLayoutPanel (Panel:Dock-Fill AND AutoSize, Row:AutoSize)
            Row3 : Panel

    De nuevo, cuando el uso que UserControl, es posible que usted tenga que envolver en un TableLayoutPanel el uso de un AutoSize fila o columna.

    Reloj para SplitContainers ya que suelen arrojar autosize comportamientos fuera de balance.

  4. 0

    He encontrado que la mejor manera de resolver este fue el uso de un código en el ControlAdded evento en los controles flowlayoutpanel para ajustar la altura del panel (la altura debido a que se utiliza la Dosificación de flujo) para ser:

    e.Control.Location.Y + e.Control.Height + some margin

    y para establecer la propiedad AutoSize en el control de usuario en sí a la Verdad.

    Que también tendría que hacer algunos de atraque y fondeo de sugerencias como por Mickel la respuesta.

    Esta funcionalidad podría ser encapsulado en su propio control heredado de controles flowlayoutpanel y la invalidación de la ControlAdded método.

  5. 0

    Sobre la adición de un control para el flowlayout usted puede cambiar el tamaño de la que ya se han añadido controles para el tamaño requerido, sin llegar a las barras de desplazamiento para flujo de panel de diseño.l

Dejar respuesta

Please enter your comment!
Please enter your name here