Tengo un groupbox que contiene un panel flowlayout y el panel flowlayout contiene un grupo de controles. Configuré el panel de distribución de flujo para que se acople con el padre. Como no sé cuántos controles habrá en el panel, configuro el cuadro de grupo autosize en true y autosizemode para que crezca y se reduzca. Cuando hago esto, groupbox se contrae como si estuviera vacío. Necesito la leyenda, así que no puedo eliminar la carpeta de grupo. Alguien sabe por qué está pasando esto?Groupbox con un panel flowlayout dentro y autosize = true se encoge como está vacío
Respuesta
No hay nada que impida que FlowLayoutPanel se reduzca a nada. Al menos tendrá que establecer su propiedad AutoSize en True también.
Usted dice "No sé cuántos controles habrá en el panel". ¿Tiene algún control en el FlowLayoutPanel en el momento del diseño? Si no lo haces, esto suena como el comportamiento esperado. El panel no tiene nada por lo que su tamaño deseado es cero, por lo que el tamaño deseado del GroupBox es cero.
Si este es el caso, entonces, con un poco de suerte, todos los controles deben agregarse en el tiempo de ejecución.
sí he controles en ella en tiempo de diseño. Una vez que todo funciona con una cantidad conocida de controles. este código se autogenerará en base a un archivo xml. En ese momento no sabré cuántos controles habrá. – scott
Establece las propiedades Anclaje: Superior, Inferior, Izquierda, Derecha para groupBox.
Estaba tratando de hacer lo mismo hoy. A continuación se muestra la solución que se me ocurrió, que es acoplar el FlowLayoutPanel dentro de GroupBox y luego usar los eventos Resize y ControlAdded del FlowLayoutPanel para activar el redimensionamiento del GroupBox padre.
El controlador de cambio de tamaño encuentra la parte inferior de los últimos controles en el FlowLayoutPanel, y cambia el tamaño del GroupBox con suficiente espacio para contener los controles más bajos en el FlowLayoutPanel.
Intenté usar AutoSize = true en FlowLayoutPanel y GroupPanel. Pero desafortunadamente esto permite que FlowLayoutPanel crezca horizontalmente.
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
int numGroupBoxes = 4;
for (int groupBoxIndex=0; groupBoxIndex<numGroupBoxes; groupBoxIndex++)
{
GroupBox groupBox = new GroupBox();
groupBox.Text = "Group " + groupBoxIndex;
groupBox.Size = new Size(this.Width, 0);
groupBox.Dock = DockStyle.Top;
this.Controls.Add(groupBox);
FlowLayoutPanel groupBoxFlowLayout = new FlowLayoutPanel();
groupBoxFlowLayout.Dock = DockStyle.Fill;
groupBox.Controls.Add(groupBoxFlowLayout);
int extraSpace = 25; // the difference in height between the groupbox and the contents inside of it
MethodInvoker resizeGroupBox = (() =>
{
int numControls = groupBoxFlowLayout.Controls.Count;
if (numControls > 0)
{
Control lastControl = groupBoxFlowLayout.Controls[numControls - 1];
int bottom = lastControl.Bounds.Bottom;
groupBox.Size = new Size(groupBox.Width, bottom + extraSpace);
groupBoxFlowLayout.Size = new Size(groupBoxFlowLayout.Width, bottom);
}
});
groupBoxFlowLayout.Resize += ((s, e) => resizeGroupBox());
groupBoxFlowLayout.ControlAdded += ((s, e) => resizeGroupBox());
// Populate each flow panel with a different number of buttons
int numButtonsInGroupBox = 3 * (groupBoxIndex+1);
for (int buttonIndex = 0; buttonIndex < numButtonsInGroupBox; buttonIndex++)
{
Button button = new Button();
button.Margin = new Padding(0, 0, 0, 0);
string buttonText = buttonIndex.ToString();
button.Text = buttonText;
button.Size = new Size(0,0);
button.AutoSize = true;
groupBoxFlowLayout.Controls.Add(button);
}
}
}
}
Éstos son tres capturas de pantalla del control de redimensionado a diferentes anchuras diferentes:
esto funciona bien, pero es una buena idea cambiar el tamaño del control de usuario al cambiar el tamaño del grupo. – Jerry
- 1. ¿Qué devuelve un IQueryable vacío como cuando está vacío?
- 2. encoge con realloc
- 3. Panel vs GroupBox en una aplicación de Windows Forms
- 4. Diseñar un GroupBox
- 5. alineación superior para FlowLayout
- 6. WPF GroupBox HeaderTemplate y DataBinding
- 7. Java Swing FlowLayout Alignments
- 8. ¿Cómo se encoge un UIPickerView en el iPhone?
- 9. ¿Cómo puedo hacer algo como un FlowLayout en Android?
- 10. WPF: Altura dinámica de GroupBox
- 11. Java - JPanel con márgenes y JTextArea dentro
- 12. Etiqueta C# AutoSize agrega relleno
- 13. Autosize UILabel
- 14. WPF DataGrid AutoSize Issue
- 15. jQuery - validación de entrada sencilla - "vacío" y "no está vacío"
- 16. Sencha Touch: lista anidada dentro de un panel de pestañas
- 17. FlowLayout de Java no cambia el tamaño correctamente
- 18. Postgresql y comparando con un campo vacío
- 19. Spark TextArea o RichText autosize
- 20. NSString está vacío
- 21. ¿Cómo está lidiando MyBatis con un conjunto de resultados vacío?
- 22. EPPlus con MemoryStream como archivo adjunto de correo electrónico: el archivo está vacío
- 23. ¿Está vacío de tragar?
- 24. Mi httpd.conf está vacío
- 25. ¿Se optimizará un vacío para el bucle utilizado como sueño?
- 26. $ _SERVER ['PHP_AUTH_USER'] está vacío
- 27. HttpContext.Current.User.Identity.Name está vacío
- 28. log4net log que se está creando pero permanece vacío
- 29. AS3: compruebe si un diccionario está vacío
- 30. Align controla a centrar en un FlowLayout
gracias. eso detuvo el encogimiento, pero causó otro problema. Crece horizontalmente, lo que provoca la necesidad de desplazarse de un lado a otro en el contenedor padre de groupboxes. el desplazamiento anterior era solo vertical. – scott
Puede establecer MaximumSize.Width en el FLP para evitar eso. –
gracias. eso funcionó bien. – scott