109 votes

DataGridView AutoFit et Remplissage

J'ai 3 colonnes dans mon DataGridView . Ce que j'essaie de faire, c'est que les deux premières colonnes s'adaptent automatiquement à la largeur du contenu et que la troisième colonne occupe l'espace restant.

Est-il possible de le faire dans WinForms ? Je charge mes données à partir d'un EF DataContext si cela peut être utile. J'ai inclus une image de ce à quoi cela ressemble actuellement.

enter image description here

1voto

Aki Points 37

Essayez de le faire,

 AutoSizeColumnMode = Fill;

0voto

Jay Points 17
public static void Fill(DataGridView dgv2)
   {
        try
        {
            dgv = dgv2;
            foreach (DataGridViewColumn GridCol in dgv.Columns)
            {
                for (int j = 0; j < GridCol.DataGridView.ColumnCount; j++)
                {
                    GridCol.DataGridView.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    GridCol.DataGridView.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    GridCol.DataGridView.Columns[j].FillWeight = 1;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

0voto

RooiWillie Points 351

Pour compléter la réponse d'AlfredBr, si vous avez masqué certaines de vos colonnes, vous pouvez utiliser la méthode suivante pour redimensionner automatiquement toutes les colonnes et faire en sorte que la dernière colonne visible remplisse l'espace vide :

myDgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
myDgv.Columns.GetLastColumn(DataGridViewElementStates.Visible, DataGridViewElementStates.None).AutoSizeMode = 
    DataGridViewAutoSizeColumnMode.Fill;

-1voto

public void setHeight(DataGridView src)
{
    src.Height= src.ColumnHeadersVisible ? src.ColumnHeadersHeight : 0 +   src.Rows.OfType<DataGridViewRow>().Where(row => row.Visible).Sum(row => row.Height);
}

-2voto

Sudhir Points 9

Essayez ceci :

  DGV.AutoResizeColumns();
  DGV.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X