¿Cómo configurar el modo de tamaño automático de FlowLayoutPanel en C#?

En Windows Forms, el control FlowLayoutPanel se usa para organizar sus controles secundarios en una dirección de flujo horizontal o vertical. O, en otras palabras, FlowLayoutPanel es un contenedor que se utiliza para organizar diferentes o los mismos tipos de controles en él, ya sea horizontal o verticalmente. En el control FlowLayoutPanel, puede establecer un valor que indica cómo se comporta FlowLayoutPanel cuando el valor de AutoSize Property se establece en true, utilizando AutoSizeMode Property . Esta propiedad tiene dos valores diferentes que se definen en la enumeración AutoSizeMode y los valores son:

  • GrowOnly: este valor indica que el FlowLayoutPanel crece de acuerdo con el contenido, pero no se reduce si el contenido es menor.
  • GrowAndShrink: este valor indica que el FlowLayoutPanel crece y se reduce según el contenido presente en él.

El valor predeterminado de esta propiedad es GrowOnly. Puede establecer esta propiedad de dos maneras diferentes:

1. Tiempo de diseño: es la forma más fácil de configurar la propiedad AutoSizeMode del FlowLayoutPanel como se muestra en los siguientes pasos:

  • Paso 1: cree un formulario de Windows como se muestra en la siguiente imagen:
    Visual Studio -> Archivo -> Nuevo -> Proyecto -> WindowsFormApp
  • Paso 2: A continuación, arrastre y suelte el control FlowLayoutPanel desde la caja de herramientas hasta el formulario como se muestra en la siguiente imagen:

  • Paso 3: Después de arrastrar y soltar, irá a las propiedades de FlowLayoutPanel y establecerá la propiedad AutoSizeMode de FlowLayoutPanel como se muestra en la siguiente imagen:

    Producción:

2. Tiempo de ejecución: es un poco más complicado que el método anterior. En este método, puede establecer la propiedad AutoSizeMode del control FlowLayoutPanel mediante programación con la ayuda de la sintaxis dada:

public virtual System.Windows.Forms.AutoSizeMode AutoSizeMode { get; set; }

Aquí, AutoSizeMode representa los modos de tamaño del control FlowLayoutPanel. Lanzará una InvalidEnumArgumentException si el valor de esta propiedad no pertenece a los valores de enumeración de AutoSizeMode. Los siguientes pasos muestran cómo establecer dinámicamente la propiedad AutoSizeMode de FlowLayoutPanel:

  • Paso 1: Crear un FlowLayoutPanel utilizando el constructor FlowLayoutPanel() proporcionado por la clase FlowLayoutPanel.
    // Creating a FlowLayoutPanel
    FlowLayoutPanel f = new FlowLayoutPanel();
    
  • Paso 2: después de crear FlowLayoutPanel, establezca la propiedad AutoSizeMode de FlowLayoutPanel proporcionada por la clase FlowLayoutPanel.
    // Setting the AutoSizeMode property
     f.AutoSizeMode = AutoSizeMode.GrowAndShrink;
    
  • Paso 3: Y por último, agregue este control FlowLayoutPanel al formulario y también agregue controles secundarios en FlowLayoutPanel usando las siguientes declaraciones:
    // Adding a FlowLayoutPanel
    // control to the form
    this.Controls.Add(f);
    
    and 
    
    // Adding child controls to
    // the FlowLayoutPanel
    f.Controls.Add(r1);
    

Ejemplo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
  
namespace WindowsFormsApp50 {
  
public partial class Form1 : Form {
  
    public Form1()
    {
        InitializeComponent();
    }
  
    private void Form1_Load(object sender, EventArgs e)
    {
        // Creating and setting the 
        // properties of FlowLayoutPanel
        FlowLayoutPanel f = new FlowLayoutPanel();
        f.Location = new Point(380, 124);
        f.AutoSize = true;
        f.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        f.Name = "Mycontainer";
        f.Font = new Font("Calibri", 12);
        f.FlowDirection = FlowDirection.RightToLeft;
        f.BorderStyle = BorderStyle.Fixed3D;
        f.ForeColor = Color.BlueViolet;
        f.BackColor = Color.LightPink;
        f.Visible = true;
  
        // Adding this control to the form
        this.Controls.Add(f);
  
        // Creating and setting the
        // properties of radio buttons
        RadioButton r1 = new RadioButton();
        r1.Location = new Point(3, 3);
        r1.Size = new Size(95, 20);
        r1.Text = "R1";
  
        // Adding this control 
        // to the FlowLayoutPanel
        f.Controls.Add(r1);
  
        RadioButton r2 = new RadioButton();
        r2.Location = new Point(94, 3);
        r2.Size = new Size(95, 20);
        r2.Text = "R2";
  
        // Adding this control 
        // to the FlowLayoutPanel
        f.Controls.Add(r2);
  
        RadioButton r3 = new RadioButton();
        r3.Location = new Point(3, 26);
        r3.Size = new Size(95, 20);
        r3.Text = "R3";
  
        // Adding this control 
        // to the FlowLayoutPanel
        f.Controls.Add(r3);
    }
}
}

Producción:

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *