如何在运行时移除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
相关产品推荐
相关产品推荐

