如果网格较小,则调整DataGridView的列以填充可用空间,并在网格大于可用空间的情况下使用滚动

时间:2012-01-26 20:37:09

标签: c# .net datagridview

我想根据所需的空间调整DataGridView的所有列,以完全显示其所有数据。如果所需空间小于可用空间我希望网格填充这个超出空间,但如果可用空间不足以正确显示我想要DataGridView的所有列自动创建滚动。有一个简单的方法吗?

5 个答案:

答案 0 :(得分:7)

点击DataGridView并选择"编辑列...",然后转到"布局"并设置" AutoSizeMode"到"填写"。

希望这是你正在寻找的。

干杯

答案 1 :(得分:3)

如果要保持表格(DataGridView)的格式化,使所有列都自动调整大小,但特别是一列填充剩余空间,则可以执行以下操作:

//Store the number of columns in a variable
int columnCount = dataGridView.Columns.Count;

//If we want the last column to fill the remaining space
int lastColumnIndex = columnCount - 1;

//Loop through each column and set the DataGridViewAutoSizeColumnMode
//In this case, if we will set the size of all columns automatically, but have
//the last column fill any extra space available.
foreach(DataGridViewColumn column in dataGridView.Columns) 
{
    if (column.Index == columnCount - lastColumnIndex) //Last column will fill extra space
    {
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    }
    else //Any other column will be sized based on the max content size
    {
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    }
}

//Turn the scrollbars on for the DataGridView if needed
dataGridView.ScrollBars = ScrollBars.Both;

答案 2 :(得分:1)

转到DataGridView属性选择" AutoSizeColumnsMode"。设置"填写"。

答案 3 :(得分:0)

DataGridView属性 - > " AutoSizeMode"到"填写"确实填满了所有可用空间,但是如果列足够大以占据大部分网格空间,那么其余的列大小将缩小。

可能是你可以尝试" AutoSizeMode"到#34; AllCells"。这不仅填满了整个网格,而且还有足够的空间来查看所有列(使用水平滚动条)

答案 4 :(得分:0)

当Datagridview中的列数是动态的时,为了调整列的大小,需要找到在Datagrid中显示的列的宽度。 在设计器中,将Autosize设置为DataGridViewAutoSizeColumnsMode.None

    Dim dgvBOMcolumnWidth As Integer = 0
    For Each gridcol As DataGridViewColumn In DgvBOMHeader.Columns
        If (gridcol.Visible) Then
            dgvBOMcolumnWidth = gridcol.Width + dgvBOMcolumnWidth
        End If
    Next

    If (dgvBOMcolumnWidth < DgvBOMHeader.Width) Then //if dynamic column width is less than actual grid width ,fill the columns.
        For Each gridcol As DataGridViewColumn In DgvBOMHeader.Columns
            gridcol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        Next
    Else
        DgvBOMHeader.AutoSize = DataGridViewAutoSizeColumnsMode.None
    End If