我想根据所需的空间调整DataGridView的所有列,以完全显示其所有数据。如果所需空间小于可用空间我希望网格填充这个超出空间,但如果可用空间不足以正确显示我想要DataGridView的所有列自动创建滚动。有一个简单的方法吗?
答案 0 :(得分:7)
点击DataGridView并选择"编辑列...",然后转到"布局"并设置" AutoSizeMode"到"填写"。
希望这是你正在寻找的。 p>
干杯
答案 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