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

如何在运行时移除DataGridView中的设计时生成空行?

解决WinForm DataGridView手动填充时的“幽灵行”问题

嘿,我太懂你碰到这个“幽灵行”的糟心感了——当年我第一次不用数据集绑定、手动往DataGridView塞数据的时候,也被这行莫名其妙的空行搞懵了好一阵!

问题根源

这个“幽灵行”其实不是什么灵异事件,它是DataGridView的默认行为:控件的AllowUserToAddRows属性默认是true,这个属性会在所有已填充的行后面自动添加一行空行,方便用户手动输入新数据。当你手动填充完数据后,这行空行就显得格外突兀,像个“幽灵”一样冒出来。

快速解决方案

方法1:在设计器里直接关闭该属性

打开WinForm设计器,选中你的DataGridView,在属性面板里找到AllowUserToAddRows,把它改成false就行。

方法2:通过代码动态设置

如果需要根据逻辑决定是否允许添加行,可以在填充数据前后加入这段代码:

// 填充数据前或填充完成后设置
dataGridView1.AllowUserToAddRows = false;

举个完整的手动填充SQLite数据的例子,你可以参考:

// 假设你已经有了SQLite的连接和命令
using (SQLiteConnection conn = new SQLiteConnection("你的连接字符串"))
{
    conn.Open();
    SQLiteCommand cmd = new SQLiteCommand("SELECT * FROM 你的表名", conn);
    SQLiteDataReader reader = cmd.ExecuteReader();
    
    // 先清空原有行(如果需要)
    dataGridView1.Rows.Clear();
    
    // 循环读取数据并添加行
    while (reader.Read())
    {
        dataGridView1.Rows.Add(
            reader["列1"],
            reader["列2"],
            reader["列3"]
            // 按你的列顺序添加对应字段
        );
    }
    
    // 关闭允许添加行,消除幽灵行
    dataGridView1.AllowUserToAddRows = false;
    
    reader.Close();
}

额外排查点

如果关闭AllowUserToAddRows后还是有“幽灵行”,那你得检查下自己的填充代码:是不是在循环里不小心多添加了一行空数据?比如有没有在while(reader.Read())外面额外调用了dataGridView1.Rows.Add()?

另外,如果你之后又需要允许用户添加行,可以在合适的时机再把AllowUserToAddRows改回true就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:29:07