You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让DataGridView表格完全适配控件?已实现列自动填充

解决DataGridView行适配控件的问题

你已经通过AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill实现了列的自动填充,针对行的适配,分两种常见场景处理:

1. 让行高根据内容自动适配

如果希望每行高度自动匹配单元格内的内容(比如包含换行的文本),直接设置AutoSizeRowsMode属性即可:

this.dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

如果只想让行高根据指定区域内容适配,也可以用更精准的枚举值:

// 忽略表头,仅根据单元格内容调整行高
this.dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
// 仅调整当前可见区域的行高
this.dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;

2. 让所有行填满DataGridView控件高度(消除底部空白)

如果希望所有行的总高度刚好填满控件可视区域,没有底部空白,需要手动计算并设置行高。可以在数据绑定完成、窗体加载或控件大小变化时执行以下逻辑:

private void AdjustRowsToFillControl()
{
    if (dataGridView1.Rows.Count == 0) return;

    // 计算可用高度:控件客户区高度 - 表头高度 - 行头宽度(按需调整)
    int availableHeight = dataGridView1.ClientSize.Height 
                          - dataGridView1.ColumnHeadersHeight;

    // 计算基础行高,再处理余数避免空白
    int baseRowHeight = availableHeight / dataGridView1.Rows.Count;
    int remainingHeight = availableHeight % dataGridView1.Rows.Count;

    // 批量设置行高
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        row.Height = baseRowHeight;
    }
    // 把剩余高度加到最后一行,填满整个控件
    if (remainingHeight > 0)
    {
        dataGridView1.Rows[dataGridView1.Rows.Count - 1].Height += remainingHeight;
    }
}

然后在合适的时机调用这个方法:

// 窗体加载完成后调用
private void Form1_Load(object sender, EventArgs e)
{
    // 先绑定数据,再调整行高
    AdjustRowsToFillControl();
}

// 控件大小变化时重新调整
private void dataGridView1_SizeChanged(object sender, EventArgs e)
{
    AdjustRowsToFillControl();
}

注意:如果你的DataGridView显示了行头,需要在计算可用高度时加上- dataGridView1.RowHeadersWidth;如果控件可能显示垂直滚动条,需要额外判断滚动条状态来修正高度计算。

内容的提问来源于stack exchange,提问作者LiterallyGutsFromBerserk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:42:09