我的datagridview在我的表单上有一列和一条记录,我想通过单击按钮在datagridview的底部添加新行,并用Rows.Count
编号填充最后一个单元格。但似乎当使用dataGridView1.Rows.Add()
方法添加新行时,它会插入到当前行的顶部。如何在datagridview的底部插入一行?预期会出现这种情况吗?
感谢。
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;
dataGridView1.Rows.Add();
}
答案 0 :(得分:0)
试试这个:
private void button1_Click(object sender, EventArgs e)
{
object[] rowData = new object[dataGridView1.Columns.Count];
rowData[0] = dataGridView1.Rows.Count;
dataGridView1.Rows.Add(rowData);
}
答案 1 :(得分:0)
虽然问题可能是duplicate,但就该问题提供的答案并不是一个充分的解决方案。你会明白为什么。
您的操作是dataGridView1.Rows.Add();
在“当前行的顶部添加新行。”这种情况并非如此。使用当前设置,设计器中默认以下内容:
this.dataGridView1.AllowUserToAddRows = true;
这导致网格的底部(未排列)行,由*符号表示。这是 NewRow ,如代码所示,通过this.dataGridView1.NewRowIndex
访问。每次编辑此行时,都会提交,并添加另一个 NewRow 。
为什么重要?因为当您将此属性设置为true
时,调用dataGridView1.Rows.Add()
会在NewRow之前的提交的行的底部添加一个新行。例如:
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;
dataGridView1.Rows.Add(new object[] { "I'm new" });
}
建议的答案:dataGridView1.Rows.Insert(dataGridView1.Rows.Count - 1, 1)
将做同样的事情。因此,为什么它不是一个解决方案。
<强>解决方案强>
交换两行代码的顺序。
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;
}
答案 2 :(得分:0)