Datagridview中有3行。我在runnig应用程序之后看到了。
但是当我使用RowsAdded
事件时,它在控制台中仅显示0,1
。它应该是0,1,2
,为什么?
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
Console.WriteLine(e.RowIndex);
}
我使用dataGridView1_RowsAdded
来修改单元格数据。它适用于除最后一行之外的所有行:
您可以看到前两行已修改(日期)。最后一次不是
最小例子:
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
Console.WriteLine("ok");
string birthday = dataGridView1.Rows[e.RowIndex]
.Cells["dataGridViewTextBoxColumn42"].Value.ToString();
DateTime dt = DateTime
.ParseExact(birthday, "dd/mm/yyyy", CultureInfo.InvariantCulture);
birthday = dt.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture);
dataGridView1.Rows[e.RowIndex]
.Cells["dataGridViewTextBoxColumn42"].Value = birthday;
}
答案 0 :(得分:1)
行为记录在MSDN:
将行添加到DataGridView控件时会发生RowsAdded事件。当用户使用该行为新记录添加新行时,此事件的处理程序中的RowIndex值等于新记录的行的新位置的索引,该值比刚刚添加的行大一。但是,以编程方式添加行时,RowIndex值是添加的第一行的索引。
RowIndex
:
获取第一个添加行的索引。
请注意,最后一行是插入新数据。这意味着在用户插入有效数据之前,此行不会添加到源。此时将弹出插入数据的新行。
答案 1 :(得分:0)
如果Datagridview
属性AllowUserToAddRows
设置为true,则最后一行用于插入,而提及@Fruchtzwerg