DataGridView AutoFit and Fill

前端 未结 10 605
孤独总比滥情好
孤独总比滥情好 2020-12-02 07:37

I have 3 columns in my DataGridView. What I am trying to do is have the first 2 columns auto fit to the width of the content, and have the 3rd column fill the r

相关标签:
10条回答
  • 2020-12-02 08:11

    You need to use the DataGridViewColumn.AutoSizeMode property.

    You can use one of these values for column 0 and 1:

    AllCells: The column width adjusts to fit the contents of all cells in the column, including the header cell.
    AllCellsExceptHeader: The column width adjusts to fit the contents of all cells in the column, excluding the header cell.
    DisplayedCells: The column width adjusts to fit the contents of all cells in the column that are in rows currently displayed onscreen, including the header cell.
    DisplayedCellsExceptHeader: The column width adjusts to fit the contents of all cells in the column that are in rows currently displayed onscreen, excluding the header cell.

    Then you use the Fill value for column 2

    The column width adjusts so that the widths of all columns exactly fills the display area of the control...

    this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    this.DataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    

    As pointed out by other users, the default value can be set at datagridview level with DataGridView.AutoSizeColumnsMode property.

    this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    

    could be:

    this.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
    

    Important note:

    If your grid is bound to a datasource and columns are auto-generated (AutoGenerateColumns property set to True), you need to use the DataBindingComplete event to apply style AFTER columns have been created.


    In some scenarios (change cells value by code for example), I had to call DataGridView1.AutoResizeColumns(); to refresh the grid.

    0 讨论(0)
  • 2020-12-02 08:15

    Just change Property from property of control: AutoSizeColumnsMode:Fill

    OR By code

    dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;

    0 讨论(0)
  • 2020-12-02 08:15
    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);
            }
        }
    
    0 讨论(0)
  • 2020-12-02 08:16

    Try doing,

     AutoSizeColumnMode = Fill;
    
    0 讨论(0)
提交回复
热议问题